Process Selector
- API Standard
• selector过程必须遵循如下的API格式:
procedure <procedure_name>
( itemtype in varchar2,
itemkey in varchar2,
actid in number,
command in varchar2,
resultout out varchar2) ...
参数说明:
itemtype Item Type的内部名称
itemkey Item Key
actid 过程被调用时的活动id, 当command参数为
RUN时此参数为null
command 调用模式, 可以是RUN, TEST_CTX, SET_CTX,
后两者用于selector过程的回调功能; 调用
wf_engine.createprocess未指定process参数时传
入command参数为RUN
resultout 对于RUN/TEST_CTX模式返回值, RUN模式返
回选择的流程名称
6.
Process Selector
- A toy demo
• 定义wfdemo.selector过程如下, 始终返回default流程, 仅作为演示:
procedure selector(itemtype in varchar2,
itemkey in varchar2,
actid in number,
command in varchar2,
resultout out varchar2) is
begin
if(command = 'RUN') then
resultout := ‘DEFAULT';
end if;
end;
• 另外定义一个dummy流程, 如图:
• 上传该wft文件, 使用如下代码运行该工作流(WAP页面必须指定process)
declare
v_itemtype varchar2(30) := 'LEAVEREQ';
v_itemkey varchar2(30) := '10';
begin
wf_engine.createprocess(v_itemtype, v_itemkey, null);
wf_engine.SetItemAttrText(v_itemtype, v_itemkey, 'LEAVEREQUSTER', 'OPERATIONS');
wf_engine.startProcess(v_itemtype, v_itemkey);
commit;
end;
7.
Process Selector
- More
• Item Type的selector信息记录可以使用如下
sql进行查询:
select name, wf_selector from wf_item_types
where name = 'LEAVEREQ'
• selector过程除了在启动工作流使决定使用
哪一个流程外, 还可以被扩展为类似于回调
(callback)的功能, 在执行活动节点之前调用
selector过程传入command参数为TEST_CTX
或者SET_CTX验证或者设置上下文.