相关疑难解决方法(0)

Windows Workflow Foundation的替代品?

作为内部呼叫中心应用程序(ASP.NET)的一部分,我一直在使用WWF,虽然学习它是理解基于状态机的工作流系统如何工作的一个很好的实践,但我绝对不喜欢WWF本身.在我看来它是:

  1. 过于复杂,尤其适用于Web应用程序(所有线程运行时的东西)
  2. 不成熟(曾与那位可怕的设计师合作过吗?)
  3. 其当前功能集中的贫血

有没有人建议更好的基于.NET的工作流框架?具体来说,我正在寻找以下功能:

  1. 基于状态机(将状态映射到可用操作)
  2. 关注用户权限(控制谁有权访问哪些操作)
  3. 能够将工作流作为定时后台任务运行(例如,发送已经处于特定状态x天的项目的提醒)

这就是我真正需要的.我不需要能够"拖放"任何活动或视觉设计流程.一旦触发了特定的动作,我很乐意编写实际的代码.

asp.net workflow

14
推荐指数
1
解决办法
8576
查看次数

任何人都可以推荐Windows Workflow的.Net开源替代品吗?

.Net堆栈中的Windows Workflow有哪些替代方案?如果您使用过这些解决方案,那么是什么让您通过Windows Workflow选择它们,这是一个不错的选择.


更新:

我继续选择由Nicholas Blumhardt创建的无国籍人.这是一种在域中建模状态的非常简单的方法.以下是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);
Run Code Online (Sandbox Code Playgroud)

如您所见,状态机使用泛型来建模状态及其各自的触发器.换句话说,您可以使用枚举,整数,字符串等来满足您的需求.可以使用条件触发器配置状态机的每个状态,该触发器将根据特定条件触发.

.net open-source workflow-foundation

12
推荐指数
1
解决办法
5898
查看次数