|
|
1
9
工作流是发生的某种业务流程。这意味着这个过程的开始和结束。您的描述听起来更像是在跟踪库存中的物品。
最后一个工作流很可能是一个状态工作流,因为该项目经历了以下各个阶段:
|
|
|
2
22
状态机是一种非常强大的实现技术,尽管我建议您考虑一个叫做 StateLess by Nicholas Blumhardt (Autofaq creator) ,因为它是一个非常简单的状态机实现,避免了Windows工作流不必要的复杂性。他的方法避免了运行时引擎持有长时间运行的工作流的问题,因为状态是由一个简单的变量(如字符串或int)定义的。 下面是一个示例状态机:
与运行Windows Workflow所需的多个项目相比,您可以在一个程序集中实现这一点。维护是非常低的,他们没有“设计师”为您的应用程序生成代码,等等。同样,这很简单,这就是美的所在。 |
|
|
3
2
考虑到您的添加(超过3个状态,不允许所有转换),我将执行以下操作:
然后,您所需要做的就是使用状态机转换您的项,每当发生外部事件时,强制/暗示这一点。 |
|
|
4
2
对我来说,状态机方面似乎更重要。因此,将您的软件实现为状态机。 是的,您应该使数据库中的所有项持久化。这也是保持长时间运行的工作流运行的方式——它们一直存在于数据库中,直到被任何活动重新激活。所有现成的业务流程管理系统(BPMS)都是这样做的。这些工作流不会保存在内存中。 将所有内容都保存在数据库中,可以轻松创建报告。 正如其他人已经提到的,用状态信息创建一个新列,或者甚至用元数据创建一个新表:state,可能是状态改变时的日志,谁改变了状态,关于即将举行的活动的信息(零件已订购但未交付-如果交付丢失,应在多少天后与供应商进行检查?)。这将使您有机会根据需要添加元数据,而不会影响零件数据库。
|
|
|
5
1
正如在原始帖子的评论中所讨论的,我对使用WF解决这个特殊问题有一些问题。
|
|
|
6
0
尽管状态机模式在技术上是正确的选项,但也有一个选项可以创建一个带有一个巨大循环的顺序工作流。在某些情况下,它实际上效果更好,更容易理解。 |
|
|
7
0
你有三种不同的状态,就我所见,所有的转换都是允许的。考虑到这一点,我不会为状态机而烦恼,因为状态机是一段检查允许的转换并向前推进的代码。 当状态驱动业务时,或者当需要一段受信任的代码作为负责“有效转换”的唯一参与者时,状态机是有意义的。 更简单地说,您只需要在任何时间点具有给定状态的实体。。。 |
|
|
8
0
听起来是个有趣的项目,祝你好运。 |
|
|
9
0
我想我们需要了解两件事。 状态机-将重点表示实体所处的特定状态。
在您的情况下,由于您的整个流程围绕单个实体进行,并且其在任何给定时间点的当前状态都是singleton,因此我建议使用状态机。 建议:
示例程序: https://www.javacodegeeks.com/2012/06/apache-commons-scxml-finite-state.html |