Intalio Tempo研究二 (如何创建和完成一个人工任务)

Intalio Tempo研究一(架构设计)

 

Tempo如何创建和完成一个任务

1. 创建和完成一个任务的序列图

Intalio Tempo研究二 (如何创建和完成一个人工任务)_第1张图片

1 创建和完成任务序列图

上图中的缩写词意义:

1)        UBPUser Business Process。它就是创建该任务的流程。一般情况下是一个BPEL流程,但是事实上它可以是任何形式的应用程序。它发起一个Web Service调用来创建一个任务,并且提供一个Web Service操作来完成该任务。

2)        FDSForm Dispatcher Service。它就像一个UBPTMP之间的代理器。

3)        TMPTask Manager ProcessBPEL流程负责管理任务的生存周期。它在接受来自FDScreateTaskRequest流程时被初始化。

4)        TMSTask Management Service。这是一个提供工作流动作,持久化任务到数据库还有处理安全事务的Web服务。

5)        UI-FWUI Framework。显示任务列表和转发表单的管理到表单管理器(XFM)。

6)        XFMXForms Manager。这是一个表单管理器的实现,XForms forms

7)        WDSWorkflow Deployment Service。管理表单的存储和访问。

注意:创建和完成一个任务是完成分开的。任务的ID被用来将createTaskResponse消息和notifyTaskCompletionRequest消息连接起来。这个ID是由TMP产生的。

 

2. 创建一个任务

创建任务是由对于FDS的一个Web服务调用启动的。接着FDS将这个请求转发给TMP,接下来TMP通过调用TMS来创建任务。

FDS是为了将“任何流程”都转化为“一个TMP”的关系而存在的,这一步是无法在BPEL中完成的。从TMP的角度来看,createTaskRequest的消息只能由一个特别定义的partnerLink发出。每一个不同的UBP就是一个不同的parterLink。为了解决这个问题,FDS设计为一个servlet可以处理any-to-one的关系,它通过接收所有发往/fds/workflowcreateTaskRequest请求消息,并且动态的将命名空间转变成TMP所期望的一样,接下来将这些请求转发到TMP

TMP返回createTaskResponse消息时,它同样发送到/fds/workflow,当然会被FDS所截获,接着FDS改变它的命名空间到该请求的最初模样。命名空间可以在createTaskResponse消息中找到,它是由先前的createTaskRequest中映射过来的。这就是为什么在UBP中创建一个任务时必须做命名空间映射的原因。这个命名空间可以通过createTaskResponse消息传回到FDS中,因此FDS才可以创建这样的消息,这个消息是UBP实例所一直等待的。

3. 完成一个任务

当一个用户登录系统,或者刷新了任务列表,这时UI-FW将会向TMS发送一个调用来取得最新的任务列表。当用户点击一个任务,这个请求被转发到相应的表单管理器上。目前,UI-FW还只适用于XFM,但是这个可以扩展成为根据一个任务的属性动态选择一个表单管理器。接下来,XFM调用TMS来获得所有任务细节。它同时还调用WDS来取得实际的表单。基于这些所有信息,XFM生成一个表单,包括有它所需的输入数据,还有让用户完成任务的按钮或者任何其他的工作流动作XFM所支持的。

当用户点击完成按钮,XFM调用TMP去完成该任务。注意:在这里FDS不需要被调用,这个调用根据任务ID来进行关联。

接着,TMP通过调用TMS来改变任务的输出以及它的状态。

接下来,TMP通过FDS将任务输出转发到UBP。任务ID在这里做完任务的关联标识。

最终,TMP在接收到UBP的回应之后,向XFM发送结果。

你可能感兴趣的:(UI,Web,应用服务器,workflow,servlet)