Wcf MVC中的消息传递工作流

Wcf MVC中的消息传递工作流,wcf,visual-studio-2015,asp.net-web-api2,workflow-foundation-4,.net-4.5.2,Wcf,Visual Studio 2015,Asp.net Web Api2,Workflow Foundation 4,.net 4.5.2,情景: 批准请求以消息形式出现在总线上(rapidMQ) 订阅者阅读消息并在需要时启动工作流 工作流是一种状态机工作流,以未分配开始 未分配项将添加到工作项队列 用户将项目分配给自己 工作流继续->移动到指定的 系统将提示用户进行批准 用户批准/拒绝 工作流继续->项目已更新并转换为已批准/已拒绝。已发送消息,以便进行进一步处理 我想使用rapidMQ作为我的消息传递总线,我还将使用WebAPI和wcf。我希望通过消息总线控制一切,因此用户批准/拒绝/分配将在总线上产生一条消息,工作流必须接收并

情景:

  • 批准请求以消息形式出现在总线上(rapidMQ)
  • 订阅者阅读消息并在需要时启动工作流
  • 工作流是一种状态机工作流,以未分配开始
  • 未分配项将添加到工作项队列
  • 用户将项目分配给自己
  • 工作流继续->移动到指定的
  • 系统将提示用户进行批准
  • 用户批准/拒绝
  • 工作流继续->项目已更新并转换为已批准/已拒绝。已发送消息,以便进行进一步处理
  • 我想使用rapidMQ作为我的消息传递总线,我还将使用WebAPI和wcf。我希望通过消息总线控制一切,因此用户批准/拒绝/分配将在总线上产生一条消息,工作流必须接收并执行该消息

    有可能使用MVC前端的工作流基础并对消息总线作出响应吗?i、 e.工作流必须将消息放置在总线上,并从总线读取消息,并相应地进行转换


    请你给我指一下正确的方向好吗?如果能更好地满足我的需要,我愿意使用其他工作流解决方案。

    您首先必须解决您的工作流托管问题。你也许可以在mvc中主持,但你不会满意的。通常,主机是一个windows服务,为工作流的入口点公开一个WCF端点。完成托管后,您可以处理消息和总线。

    我已经从消息队列驱动了工作流。
    基本概念是将工作流作为服务托管,并将任何其他应用程序或网站作为完全独立的解决方案托管。 然后它们都通过队列进行通信

    我构建了一个工作流控制器类来处理传入的消息并运行/重新添加工作流。我从不让工作流本身读取队列,因为当队列下降时,处理计时/等待会变得烦人。最好在工作流等待来自队列的消息时将其发送到睡眠状态,并让控制器类处理队列

    当发送到队列时,我将工作流活动调用到工作流解决方案中的队列类中。我在运行工作流时,通过将队列处理类传递到输入参数中的工作流中,将其注入到工作流中

  • 最好将工作流引擎与业务逻辑隔离开来。工作流引擎对外公开API并维护任务节点和状态

  • 当您有一个可行的工作流引擎时,您可以创建一个代理层来将消息转换为工作流引擎API

  • 当客户机从MQ获得消息时,将其转发到代理层,并将消息转换为工作流API调用。在本例中,消息实际上是另一种形式的API调用


  • 您希望您的工作流业务规则多久更改一次?如果业务分析师可以修改工作流,那么WF将是一个选项,因此您可以提供一个UI,允许他们在任何时候(需要大量工作,但可能)修改工作流。如果开发人员将负责维护流程的业务规则方面,最好不要实现WF,而只是让windows服务端操作队列上的项目。当然,这意味着您需要以自己的方式维护长时间运行的进程的状态。@ajawad987开发人员将维护它,其他用户不需要这样做。我正在寻找一个工作流解决方案,我有一些复杂的流程