workflow - 您推荐哪种工作流引擎?

标签 workflow

关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。












想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。

8年前关闭。




Improve this question




我正在考虑在这个即将到来的项目中使用工作流引擎的想法。我们知道使用工作流引擎有很多注意事项,而且我们在许多平台上都有很多开发经验,因此我们愿意让工作流引擎的选择优先于我们最喜欢的工具集或开发人员 IDE。

与外部工作流(即将 SOAP 调用聚合到具有事务感知能力的更高级别 SOA)相比,我们对内部工作流(即,用于轻松更改 ERP 目的而不涉及额外编码时间的 Petri 网)更感兴趣。您会推荐哪种工作流引擎?我们通过 Oracle 粗略地查看了产品, Microsoft ,还有一些 open source东西也是。这一切都非常令人难以抗拒,因此请仅在您具有实现内部工作流程的实际经验时才做出回应。

最佳答案

如果您可以使用状态机,那么我推荐一个名为 StateLess by Nicholas Blumhardt (Autofaq creator) 的开源项目。 .他的方法避免了运行时引擎持有长时间运行的工作流的问题,因为状态是由一个简单的变量(如字符串或整数)定义的。

这是一个示例状态机:

var phoneCall = new StateMachine<State, Trigger>(State.OffHook);

phoneCall.Configure(State.OffHook)
    .Permit(Trigger.CallDialed, State.Ringing);

phoneCall.Configure(State.Ringing)
    .Permit(Trigger.HungUp, State.OffHook)
    .Permit(Trigger.CallConnected, State.Connected);

phoneCall.Configure(State.Connected)
    .OnEntry(() => StartCallTimer())
    .OnExit(() => StopCallTimer())
    .Permit(Trigger.LeftMessage, State.OffHook)
    .Permit(Trigger.HungUp, State.OffHook)
    .Permit(Trigger.PlacedOnHold, State.OnHold);

// ...

phoneCall.Fire(Trigger.CallDialled);
Assert.AreEqual(State.Ringing, phoneCall.State);

您的状态可以是一个整数,这将允许您从数据库中为其提供当前状态。这可以在状态机的构造函数上设置,如下所示:
var stateMachine = new StateMachine<State, Trigger>(
    () => myState.Value,
    s => myState.Value = s);

与运行 Windows 工作流所需的多个项目相比,您可以仅在一个程序集中实现这一点。维护成本极低,没有“设计师”为您等生成代码。同样,它很简单,而且美就在这里。

关于workflow - 您推荐哪种工作流引擎?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/902375/

相关文章:

mercurial - 如何将新功能推送到中央 Mercurial 仓库?

多个工作流程的工作流程持久性

svn - Git 通过 svn 管理文件

状态机工作流中的 SharePoint 修改表单

Erlang 工作流程

windows - 生产代码中的工作流

用于使自定义修改的开源软件保持最新的 git 工作流程?

debugging - 如何: debug Scala code when outside of an IDE

version-control - Mercurial:表示分支已通过测试?

用于多个 MapReduce 步骤的 Python 工作流引擎