Windows Workflow 4中的人类活动支持

3
我正在研究.NET 4.0的Windows Workflow(WF),但好像缺少一些要素。从BPM角度来看,您需要具备工作队列和安全性(用户授权)的概念。
例如,假设您有多个长时间运行的工作流实例,这些实例来自不同的工作流,并在应用程序服务器上运行(例如AppFabric)。其中一些实例正在等待来自客户端的调用(可能是基于内容的WCF接收)。客户端需要能够查询服务器,以确定哪些工作流实例(来自任何工作流)正在等待他们的输入。这必须在活动级别进行权限控制(最好使用Active Directory Services)。
例如:
  • 工作流1
    • 活动A,基于orderId进行关联
      • 权限:Abby、Bill
    • 活动B,基于orderId进行关联
      • 权限:Abby
  • 工作流2
    • 活动C,基于workItemId进行关联
      • 权限:Bill

工作流1有3个实例正在运行,其中两个在Activity A(订单123和456),一个在Activity B(订单789)。

工作流2在Activity C上有1个实例(工作项99)。

Bill查询服务器并看到:

工作流   活动       键值
1         A           orderId=123
1         A           orderId=456
2         C           workItemId=99

Abby查询服务器并看到:

工作流   活动       键值
1         A           orderId=123
1         A           orderId=456
1         B           orderId=789

本文讨论了为WF 3.x从头编写功能(支持人工活动)的方法。

问题:

  1. WF 4中是否具有此功能?如果有,它被称为什么?
  2. 如果没有,是否有开源项目将此功能添加到WF 4中?
  3. 如果没有,是否有比上述文章更为最新的实现指南?
注意:如果可以避免的话,我不想将解决方案与SharePoint耦合。

我现在正在构建这样一个系统,并已经研究了几个月。这是一项艰巨的工作 - 不幸的是,由于它是商业风险,我无法分享。我的系统还使用MSMQ作为传输方式,因此增加了更多的复杂性。持久双工、.NET上下文相关性等等。祝你好运! - x0n
1个回答

2

好的,让我们从简单的答案开始。

  1. 没有直接支持此功能的盒装软件。
  2. 据我所知,没有操作系统项目提供此功能。
  3. 据我所知没有这样的东西,但我必须承认我也不知道这篇文章。

到目前为止,就是这些坏消息。

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

SqlWorkflowInstanceStore 还具有属性提升的概念,可让您提取并因此查询工作流变量,例如您示例中的 orderId。另一个要注册的事情是启动工作流程的人,因为某些操作通常只允许原始操作者执行。

将这些与每个工作流和 WCF 操作的安全规则的自定义表相结合,我认为您在这里基本上已经掌握了实现的方法。


+1,并且可能有一个答案(我会给其他人一些时间)。我正在考虑使用PersistenceParticipant扩展和Promote,以及你建议的SqlWorkflowInstanceStore,很高兴得到确认这是合理的。谢谢! - TrueWill

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接