Windows Workflow 4中的人员活动支持

时间:2010-11-12 20:31:13

标签: wcf .net-4.0 workflow-foundation-4 appfabric bpm

我正在研究.NET 4.0的Windows Workflow(WF),似乎缺少一些内容。从BPM的角度来看,您希望拥有工作队列和安全性(用户授权)的概念。

例如,假设您在应用程序服务器(例如AppFabric)上运行的多个不同工作流中有多个长时间运行的工作流实例。一些实例正在等待来自客户端的呼叫的活动(可能是具有基于内容的相关性的WCF接收)。客户端需要能够查询服务器以确定哪些工作流实例(来自任何工作流)正在等待来自它们的输入。这必须在活动级别基于权限(最好使用Active Directory服务)。

例如:

  • 工作流程1
    • 活动A,与orderId相关联
      • 权利:Abby,Bill
    • 活动B,与orderId相关
      • 权利:Abby
  • 工作流程2
    • 活动C,与workItemId相关联
      • 权利:Bill

工作流程1有3个实例在运行,2个在活动A(订单123和456),1个在活动B(订单789)。 工作流2在活动C(工作项99)上运行了1个实例。

Bill查询服务器并看到:

Workflow  Activity  Key
1         A         orderId=123
1         A         orderId=456
2         C         workItemId=99

Abby查询服务器并看到:

Workflow  Activity  Key
1         A         orderId=123
1         A         orderId=456
1         B         orderId=789

This article讨论为WF 3.x从头开始编写功能(支持人类活动)。

问题:

  1. WF 4中是否有此功能?如果是这样,它叫什么?
  2. 如果没有,是否有一个开源项目将任何此功能添加到WF 4?
  3. 如果没有,是否有比上述文章更多的最新实施指南?
  4. 注意:如果可以避免,我宁愿不将解决方案与SharePoint结合使用。

1 个答案:

答案 0 :(得分:2)

好的,让我们从简单的芒果开始吧。

  1. 此框中没有直接支持
  2. 据我所知,没有提供此功能的操作系统项目。
  3. 不是我知道的,但我不得不承认我也不知道这篇文章。
  4. 到目前为止的坏消息。

    假设你想写这样的东西,但是有一些基本的构建块。如果您使用SqlWorkflowInstanceStore,您将获得一个包含给定工作流的当前书签的列。这将告诉您当前在给定工作流中哪些Receive活动处于活动状态。

    SqlWorkflowInstanceStore中还有一个属性提升的概念,它允许您提取工作流变量,从而查询示例中的orderId等工作流变量。注册的另一件事是启动工作流程的人,因为通常只有发起人允许某些行为。

    将这些与自定义表格相结合,每个工作流程都有安全规则。 WCF操作,我认为你已经完成了基本实现的方法。