Work Flow
学习笔记
1.
WfRequester
WfRequester
is the interface that has a direct concern with the execution and results
of a workflow process - it represents the request for some work to be done. Its
performer, a WfProcess, is expected to handle its request and communicate significant
status changes; in particular to inform the requester when it has completed performing
the requested work. A single requester can have many processes associated with it.
说明:
WfRequester
接口是一个和工作流流程的执行及结果有直接关系的接口;它代表了对一些工作执行的请求;它的一个主要功能是把
WfProcess
链接到一个其它应用;其中
WfRequester
会关联到多个
WfProcee,
当
WfProcess
发生
complete
、
terminate
、
abort
事件时会通过回调
receiveEvent()
方法来通知
WfRequest
;在
receiveEvent(event)
方法中,参数
event
是一个
WfEventAudit
对象,其中
WfEventAudit
中有一个方法
source(),
通过这个方法我们可以得知是哪个
WfExecutionObject
对象触发了事件源;得到了
WfExcutionObject
即
WfProcess
我们也进而
得到了和这个
WfProcess
相关联的其它应用;
主要步骤
:
(1)
自定义一个自己的类或接口,如
GenericRequester,
这个
GenericRequester
类代表用户自定义的一个请求者;
(2)
在启动
WfProcess
是,把这个请求者和
WfProcess
进行绑定注册到
WfRequester
中;
在
WfReuester
的
registerProcess()
就是做这个功能,主要代码如下
protected Map performers = null;
public void registerProcess(WfProcess process, Map context, GenericRequester requester){
performers.put(process, requester);
}
(3)
当工作流程在执行的过程中发生
complete
、
terminate
、
abort
事件时会回调
WfRequest
中的
receiveEvent()
方法:
requester.receiveEvent(audit);
(4)
在
receiveEvent()
中首先根据
WfEventAudit
的
source()
获取触发事件的
WfProcess
对象;
receiveEvent(WfEventAudit event){
//
获取事件源
process
对象
WfProcess process = (WfProcess) event.source();
//
根据
prcocess
对象获取在注册时绑定的自定义请求者
GenericRequester
GenericRequester req = (GenericRequester) performers.get(process);
//
执行自定义请求者的方法
req.receiveResult(process.result());
}
其它:在这里
GenericRequester
也可是一个
WfProcess
或
WfActivity
对象,这样可以在
WfProcess
完成操作后又启动另一个子流程或某个活动;