我正在研究.NET 4.0的Windows Workflow(WF),似乎缺少一些内容。从BPM的角度来看,您希望拥有工作队列和安全性(用户授权)的概念。
例如,假设您在应用程序服务器(例如AppFabric)上运行的多个不同工作流中有多个长时间运行的工作流实例。一些实例正在等待来自客户端的呼叫的活动(可能是具有基于内容的相关性的WCF接收)。客户端需要能够查询服务器以确定哪些工作流实例(来自任何工作流)正在等待来自它们的输入。这必须在活动级别基于权限(最好使用Active Directory服务)。
例如:
工作流程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从头开始编写功能(支持人类活动)。
问题:
注意:如果可以避免,我宁愿不将解决方案与SharePoint结合使用。
答案 0 :(得分:2)
好的,让我们从简单的芒果开始吧。
到目前为止的坏消息。
假设你想写这样的东西,但是有一些基本的构建块。如果您使用SqlWorkflowInstanceStore,您将获得一个包含给定工作流的当前书签的列。这将告诉您当前在给定工作流中哪些Receive活动处于活动状态。
SqlWorkflowInstanceStore中还有一个属性提升的概念,它允许您提取工作流变量,从而查询示例中的orderId等工作流变量。注册的另一件事是启动工作流程的人,因为通常只有发起人允许某些行为。
将这些与自定义表格相结合,每个工作流程都有安全规则。 WCF操作,我认为你已经完成了基本实现的方法。