【发布时间】:2009-05-31 21:42:01
【问题描述】:
.Net 堆栈中的 Windows 工作流有哪些替代方案?如果您使用过这些解决方案,是什么让您选择了它们而不是 Windows Workflow,这是一个不错的选择。
更新:
我继续选择了由 Nicholas Blumhardt 创建的 stateless。这是对域中的状态进行建模的一种非常简单的方法。以下是google提供的示例代码:
var phoneCall = new StateMachine<State, Trigger>(State.OffHook);
phoneCall.Configure(State.OffHook)
.Allow(Trigger.CallDialed, State.Ringing);
phoneCall.Configure(State.Ringing)
.Allow(Trigger.HungUp, State.OffHook)
.Allow(Trigger.CallConnected, State.Connected);
phoneCall.Configure(State.Connected)
.OnEntry(t => StartCallTimer())
.OnExit(t => StopCallTimer())
.Allow(Trigger.LeftMessage, State.OffHook)
.Allow(Trigger.HungUp, State.OffHook)
.Allow(Trigger.PlacedOnHold, State.OnHold);
phoneCall.Configure(State.OnHold)
.SubstateOf(State.Connected)
.Allow(Trigger.TakenOffHold, State.Connected)
.Allow(Trigger.HungUp, State.OffHook)
.Allow(Trigger.PhoneHurledAgainstWall, State.PhoneDestroyed);
如您所见,状态机使用泛型对状态及其各自的触发器进行建模。换句话说,您可以使用枚举、整数、字符串等来满足您的需求。状态机的每个状态都可以配置有条件触发器,这些触发器将根据特定条件触发。
【问题讨论】:
-
为什么? Windows Workflow Foundation 出了什么问题?
-
-1 表示没有给出超出 !WF 的任何标准。
-
实际上,我倾向于同意 WF 有一些缺点,尤其是在状态机方面。我很想看看你自己的“!WF”的原因,以及任何回复......目前我正在为此使用昂贵的产品......并考虑推出我自己的工作流引擎,以更好地满足我的需求(对于长时间运行的有状态业务流程,其中流程本身会在个别案例的生命周期内发生变化)。
-
我留下了这个开放式结尾,希望答案能够推动讨论,而不是我将主题缩小到 WF 的一个方面。
标签: .net open-source workflow-foundation