在 InfoQ 新发布的一篇文章中,SOA 编辑 Boris Lublinsky 阐释了如何在 Windows workflow foundation (WF) 管理的工作流中处理人工活动。
虽然 Windows workflow 是实施业务流程处理的一个优秀框架,但它却缺乏对人工活动的直接支持。虽然已经存在解决这个问题的几种方法,但却不够通用。Boris 展示了一种在 WF 中实现人工活动的通用方法,他使用了工作队列管理器实作为工作流引擎与人工活动执行之间的解耦层:
这是一个集中的服务,负责跟踪系统所有用户的所有任务。任何需要人工交互活动的工作流程(或者服务 / 应用程序所包含的工作流程),都去调用一个自定义的工作流活动 [5],以通过它将请求提交到工作队列管理器,并对其进行持久化,同时允许系统的其他组件与这些请求一同协作。这样,工作队列管理器就成为了工作流引擎和人工活动执行之间的解耦层。这种方法对于在工作流执行期间用户并不存在于系统中的情形也提供了支持。同时,工作队列管理器通过形成的集中服务,可以将所有任务与指定的用户结合,而不用考虑是从哪里初始化的流程。因为不同的用户任务可以要求不同的输入信息以及产生不同的输出,工作流和人工活动之间的通信采用了 XML 进行输入输出,从而可以处理任何可能的请求和响应。
Boris 阐述了整个系统的内部实现,突出了重要的设计决策和背后的依据。
详细内容,请阅读全文:在 Windows workflow 里实现人工活动。
评论