当我们发送一个审批请求时,如果审批人在通知页面就能看到要审批的数据信息就不用登录到系统中查看相关信息了,可直接在通知中审批掉。
相关代码如下:
创建package:
create or replace package QTESTWF as
procedure start_workflow (item_id in number,user_name in varchar2) ;
procedure get_line_detail(document_id in varchar2,
display_type in varchar2,
document in out NOCOPY varchar2,
document_type in out NOCOPY varchar2);
end QTESTWF;
/
create or replace package body QTESTWF as
procedure start_workflow (item_id in number,user_name in varchar2)
IS
l_asset_number VARCHAR2(100) :='D';
l_ItemType varchar2(100) := 'QTESTWF';--'QTESTWF';--流程内部名称
l_ItemKey varchar2(100) ;
v_url varchar2(1000) := 'http://61.144.28.248';
P_CONTENT VARCHAR2(3000) :='测试工作流';
begin
select QTESTWF_SEQ.nextval into l_ItemKey from dual;--获取序列号
wf_engine.createProcess(ItemType => l_ItemType, --流程名
ItemKey => l_ItemKey, --项目关键字
process => 'QTESTWF', --process内部名称
user_key => l_ItemKey, --用户关键字
owner_role => 'D' --流程责任人
);
--以下是参数
wf_engine.SetItemAttrText(itemtype => l_itemtype,
itemkey => l_itemkey,
aname => 'USERNAME',--对应的都是内部名称
avalue => l_asset_number);
/*
wf_engine.SetItemAttrText(itemtype => l_itemtype,
itemkey => l_itemkey,
aname => 'P_SUBJECT',
avalue => 'HM WF');
*/
wf_engine.SetItemAttrText(itemtype => l_itemtype,
itemkey => l_itemkey,
aname => 'P_CONTENT',
avalue => P_CONTENT);
wf_engine.StartProcess(ItemType => l_ItemType, ItemKey => l_ItemKey);
commit;
end start_workflow;
----------------------------------------------------------------------------------------
--Get workflow attribute
----------------------------------------------------------------------------------------
procedure get_line_detail(document_id in varchar2,
display_type in varchar2,
document in out NOCOPY varchar2,
document_type in out NOCOPY varchar2) is
l_document VARCHAR2(32000) := '';
l_user_name varchar2(30);
l_org_id number := fnd_profile.value('ORG_ID');
max_lines_dsp NUMBER := 20;
l_line_count number :=0;
v_url_str varchar2(254);
v_req_url_str varchar2(254);
NL VARCHAR2(1) := fnd_global.newline;
l_item_type wf_items.item_type%TYPE;
l_item_key wf_items.item_key%TYPE;
l_doc_type varchar2(40);
cursor c_test is
select * from CMCC_FLEXFIELD_TEST ;
begin
-- max_lines_dsp:= to_number(fnd_profile.value('PO_NOTIF_LINES_LIMIT'));
if max_lines_dsp is NULL then
max_lines_dsp := 20;
end if;
l_item_type := substr(document_id, 1, instr(document_id, ':') - 1);
l_item_key := substr(document_id, instr(document_id, ':') + 1,
length(document_id) - 2);
l_user_name := wf_engine.GetItemAttrNumber(itemtype => l_item_type,
itemkey => l_item_key,
aname => 'USERNAME');
l_document := '
' || '' ||
'' || l_doc_type || '测试信息
' ||
'' || '' || '' ||
'名字 | ' || '' ||
'Item ID | ' ||
'组织 | ' ||
'段1 | ' ||
'段2 | ' ||
'段3 | ' || '
';
for c1 in c_test loop
l_document := l_document || '' || '' ||
c1.username || ' | ' ||
'' || c1.inventory_item_id||
' | ' || '' ||
c1.organization_id || ' | ' ||
'' || c1.segment1||
' | ' || '' ||
c1.segment2|| ' | ' ||''||
c1.segment3 || ' | ' ||
'
';
end loop;
/*
for rec_request_header in cur_request_header loop
l_document := l_document || '' || '' ||
rec_request_header.doc_number || ' | ' ||
'' || rec_request_header.project_number||
' | ' || '' ||
rec_request_header.project_name || ' | ' ||
'' || rec_request_header.require_dept||
' | ' || '' ||
rec_request_header.construct_dept|| ' | ' ||
rec_request_header.comments || '' ||
'
';
end loop;
*/
l_document := l_document ||'
';
l_document := l_document ||'
';
l_document := l_document ||'
' || '' ||
'' || l_doc_type || '行内容
' ||
'' || '' || '' ||
'事务类型 | ' || '' ||
'任务编号 | ' ||
'支出类型 | ' ||
'帐户别名 | ' ||
'
';
/*
for req_request_line in cur_request_line loop
l_document := l_document || '' || '' ||
req_request_line.tran_type_name ||
' | ' || '' ||
req_request_line.task_name || ' | ' ||
'' || req_request_line.exp_type ||
' | ' || '' ||
req_request_line.segment1 || ' | ' ||
'
';
end loop;
*/
l_document := l_document || '
';
l_document := l_document ||'
';
l_document := l_document ||'
' || '' ||
'' || l_doc_type || '物料明细
' ||
'' || '' || '' ||
'行号 | ' || '' ||
'物料编码 | ' ||
'物料说明 | ' ||
'需求数量 | ' ||
'单位 | ' ||
'
';
l_line_count :=0;
/*
for req_request_detail in cur_request_detail loop
l_line_count := l_line_count + 1;
l_document := l_document || '' || '' ||
req_request_detail.rownum || ' | ' ||
'' || req_request_detail.item_code ||
' | ' || '' ||
req_request_detail.item_desc || ' | ' ||
'' || req_request_detail.require_quantity ||
' | ' || '' ||
req_request_detail.tran_uom || ' | ' ||
'
';
--add by YanWanJiang begin
if l_line_count >= max_lines_dsp then
l_document := l_document || '' ;
v_url_str := wf_core.translate ('WF_WEB_AGENT') || '/QINVAPR.showreqdetailinfo?l_doc_type=' || l_doc_type || '&document_id=' || l_header_id || '&org_id=' || l_org_id;
v_req_url_str := v_req_url_str || '' || '更多行信息' || '';
l_document := l_document || '
' || v_req_url_str || ' | '|| NL ;
l_document := l_document || '
'|| NL ;
l_document := l_document || '
';
document:=l_document;
exit;
end if;
--add by YanWanJiang end
end loop;
*/
l_document := l_document || '';
document:=l_document;
end get_line_detail;
end QTESTWF;
/
2,调用workflow:
Declare
l_asset_number VARCHAR2(100) :='SYSADMIN';
l_ItemType varchar2(100) := 'QTESTWF';--'QTESTWF';--流程内部名称
l_ItemKey varchar2(100) ;
v_url varchar2(1000) := 'http://61.144.28.248';
P_CONTENT VARCHAR2(32000) :='测试工作流';
begin
select QTESTWF_SEQ.nextval into l_ItemKey from dual;--获取序列号
wf_engine.createProcess(ItemType => l_ItemType, --流程名
ItemKey => l_ItemKey, --项目关键字
process => 'QTESTWF', --process内部名称
user_key => l_ItemKey, --用户关键字
owner_role => 'D' --流程责任人
);
--以下是参数
wf_engine.SetItemOwner(itemtype => l_itemtype,
itemkey => l_itemkey,
owner => 8439);
wf_engine.SetItemAttrText(itemtype => l_itemtype,
itemkey => l_itemkey,
aname => 'USERNAME',--对应的都是内部名称
avalue => l_asset_number);
wf_engine.SetItemAttrText(itemtype => l_itemtype,
itemkey => l_itemkey,
aname => 'SEND_EMPLOYEE',
avalue => 'D');
wf_engine.SetItemAttrText(itemtype => l_itemtype,
itemkey => l_itemkey,
aname => 'OPEN_FORM',
avalue => 'CTESTHM:inventory_item_id=2'); --带参数调用FORM
--'QINVISSRAP:X_HEADER_ID="'||to_char(l_header_id)||'"MFG_ORGANIZATION_ID="'||to_char(l_organization_id)||'"';
wf_engine.SetItemAttrText(itemtype => l_itemtype,
itemkey => l_itemkey,
aname => 'P_SUBJECT',
avalue => '通知汇总');
/*
wf_engine.SetItemAttrText(itemtype => l_itemtype,
itemkey => l_itemkey,
aname => 'P_CONTENT',
avalue => P_CONTENT);
*/
wf_engine.SetItemAttrText (itemtype => l_itemtype,
itemkey => l_itemkey,
aname => 'P_CONTENT',
avalue => 'plsql:QTESTWF.get_line_detail/'||l_itemtype||':'||l_itemkey);
wf_engine.StartProcess(ItemType => l_ItemType, ItemKey => l_ItemKey);
commit;
end ;
本文作者:网友 来源:网络http://space.itpub.net/11969955/