3

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

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

例如:

  • 工作流程 1
    • 活动 A,与 orderId 相关
      • 权利:艾比,比尔
    • 活动 B,与 orderId 相关
      • 权利:艾比
  • 工作流程 2
    • 活动 C,与 workItemId 相关
      • 权利:比尔

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

Bill 查询服务器并看到:

工作流活动键
1 个订单Id=123
1 个订单Id=456
2 C workItemId=99

Abby 查询服务器并看到:

工作流活动键
1 个订单Id=123
1 个订单Id=456
1 B 订单ID=789

本文讨论了从头开始为 WF 3.x 编写功能(对人类活动的支持)。

问题:

  1. WF 4 中有这个功能吗?如果是这样,它叫什么?
  2. 如果没有,是否有一个开源项目可以将任何此功能添加到 WF 4?
  3. 如果没有,是否有比上述文章更多的实施指南?

注意:如果可以避免,我宁愿不将解决方案与 SharePoint 结合使用。

4

1 回答 1

2

好的,让我们从简单的遮阳篷开始。

  1. 不,盒子里没有对此的直接支持
  2. 据我所知,没有提供此功能的操作系统项目。
  3. 不是我知道,但我不得不承认我也不知道这篇文章。

到目前为止,坏消息。

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

SqlWorkflowInstanceStore 中还有属性提升的概念,它允许您提取并查询工作流变量,例如示例中的 orderId。要注册的另一件事是启动工作流程的人,因为通常某些操作仅由发起人允许。

将这些与带有每个工作流和 WCF 操作的安全规则的自定义表结合起来,我应该认为您已经顺利实现了这里的基本实现。

于 2010-11-15T18:56:19.360 回答