文档审批过程

DocumentApprovalProcess 示例演示了如何将许多 Windows Workflow Foundation 和 Windows Communication Foundation 的功能结合使用。 它们共同实现文档审批流程方案。 客户端应用程序可以提交文档以供审批,并可以批准文档。 存在审批管理器应用程序,以促进客户端之间的通信,并强制执行审批过程的规则。 审批过程是可以执行多种类型审批的工作流程。 存在多个活动来获取个人审批过程、团体审批过程(一定百分比的审批者)和复合审批过程(由团体审批和个人审批按顺序组成)。

示例详细信息

下图演示了文档审批流程工作流:

文档审批流程工作流

从客户端的角度来看,审批过程如下所示:

  1. 客户申请成为审批流程系统中的用户。

  2. WCF 客户端将发送到由审批管理器应用程序托管的 WCF 服务。

  3. 唯一的用户 ID 将返回到客户端。 客户端现在可以参与审批过程。

  4. 加入后,客户可以使用单一、法定人数或复杂的审批流程发送文档以供批准。

  5. 单击客户端界面中的按钮,在客户端工作流服务主机中启动工作流实例。

  6. 工作流将审批请求发送到审批管理器应用程序。

  7. 工作流管理器在自己的一端启动工作流来表示审批过程。

  8. 执行管理器审批工作流后,结果将发回客户端。

  9. 客户端显示结果。

  10. 客户端可以随时收到审批请求并响应请求。

  11. 客户端上托管的 WCF 服务可以从审批管理器应用程序接收审批请求。

  12. 文档信息显示在客户端上以供审阅。

  13. 用户可以批准或拒绝文档。

  14. WCF 客户端用于将审批响应发送回审批管理器应用程序。

从审批管理器应用程序的角度来看,审批过程如下所示:

  1. 客户端请求参与审批流程系统。

  2. 审批管理器上的 WCF 服务收到成为审批流程系统的一部分的请求。

  3. 为客户端生成唯一 ID。 用户信息存储在数据库中。

  4. 唯一 ID 将发送回用户。

  5. 接收审批请求。 审批管理器执行审批过程。

  6. 审批经理收到审批请求,启动新的工作流。

  7. 根据请求的类型(个人、团体或复合)来执行不同的活动。

  8. 发送和接收相关的活动,这些活动用于向客户端发送供审阅的审批请求和从客户端接收响应。

  9. 审批过程工作流的结果将发送到客户端。

使用示例

安装数据库

  1. 从使用管理员权限打开的 Visual Studio 命令提示符中,导航到此 DocumentApprovalProcess 文件夹并运行Setup.cmd。

设置应用程序

  1. 使用 Visual Studio 打开DocumentApprovalProcess.sln解决方案文件。

  2. 要生成解决方案,按 Ctrl+Shift+B。

  3. 若要运行解决方案,请在解决方案资源管理器中右键单击 ApprovalManager 项目,然后在右键菜单中单击Debug->Start新实例以启动审批管理器应用程序。

    等待管理器的输出指示它已准备就绪。

运行个人审批方案

  1. 使用管理员权限打开命令提示符。

  2. 导航到包含解决方案的目录。

  3. 导航到 ApprovalClient\Bin\Debug 文件夹并执行两个 ApprovalClient.exe 实例。

  4. 单击 “发现”,等待 订阅 按钮启用。

  5. 键入任何用户名,然后单击 “订阅”。 对于一个客户端,请使用 UserType1,并且对于另一种类型,请使用 UserType2

  6. 在客户端中 UserType1 ,从下拉菜单中选择单个审批类型,然后键入文档名称和内容。 单击“ 请求审批”。

  7. UserType2 客户端中,将显示等待审批的文档。 选择该文档,然后按“批准”或“拒绝”。 结果应在UserType1 客户端中显示。

运行团体审批方案

  1. 使用管理员权限打开命令提示符。

  2. 导航到包含解决方案的目录。

  3. 导航到 ApprovalClient\Bin\Debug 文件夹并执行三个 ApprovalClient.exe 实例。

  4. 单击 “发现”,等待 订阅 按钮启用。

  5. 键入任何用户名,然后单击 “订阅”。 对于一个客户端,使用 UserType1 和其他两个类型 UserType2

  6. UserType1 客户端中,从下拉菜单中选择团体审批类型,然后键入文档名称和内容。 单击“ 请求审批”。 这要求两个 UserType2 客户端批准或拒绝文档。 虽然这两个 UserType2 客户端都必须做出响应,但只需要其中一个客户端同意文档即可获得确认。

  7. UserType2 客户端中,将显示一份等待审批的文档。 选择该文档,然后按“批准”或“拒绝”。 结果应在UserType1 客户端中显示。

运行复合审批方案

  1. 使用管理员权限打开命令提示符。

  2. 导航到包含解决方案的目录。

  3. 导航到 ApprovalClient\Bin\Debug 文件夹并执行四个 ApprovalClient.exe 实例。

  4. 单击 “发现”,等待 订阅 按钮启用。

  5. 键入任何用户名,然后单击 “订阅”。 为第一个客户端使用 UserType1,为第二个客户端使用 UserType2,为最后一个客户端使用 UserType3

  6. 在客户端中 UserType1 ,从下拉菜单中选择单个审批类型,然后键入文档名称和内容。 单击“ 请求审批”。

  7. UserType2 客户端中,将显示一份等待审批的文档。 选中它,然后按下批准,文档将传递给UserType3客户端。

    如果第一个 UserType2 团体批准该文档,则该文档将传递到 UserType3 客户端。

  8. 批准或拒绝来自UserType3客户端的文档。 结果应在UserType1 客户端中显示。

清理

  1. 在 Visual Studio 命令提示符中,导航到 DocumentApprovalProcess 文件夹并运行Cleanup.cmd。