You are on page 1of 6

create or replace package approve_pkg is

-- Author : LI.SR
-- Created : 2006-3-13 15:38:40
-- Purpose :
g_id Number;
g_money Number;
g_error Varchar2(1000);
Procedure judge_status(itemtype IN VARCHAR2
,itemkey IN
VARCHAR2
,actid IN
NUMBER
,funcmode IN
VARCHAR2
,resultout OUT
VARCHAR2);
Procedure update_status(itemtype IN VARCHAR2
,itemkey IN
VARCHAR2
,actid IN
NUMBER
,funcmode IN
VARCHAR2
,resultout OUT
VARCHAR2);
Procedure judge_money(itemtype IN VARCHAR2
,itemkey IN
VARCHAR2
,actid IN
NUMBER
,funcmode IN
VARCHAR2
,resultout OUT
VARCHAR2);
Procedure post_moeny( itemtype IN VARCHAR2
,itemkey IN
VARCHAR2
,actid IN
NUMBER
,funcmode IN
VARCHAR2
,resultout OUT
VARCHAR2);
Procedure reject_moeny(itemtype IN VARCHAR2
,itemkey IN
VARCHAR2
,actid IN
NUMBER
,funcmode IN
VARCHAR2
,resultout OUT
VARCHAR2);
Procedure loadto ( itemtype IN VARCHAR2
,itemkey IN
VARCHAR2
,actid IN
NUMBER
,funcmode IN
VARCHAR2
,resultout OUT
VARCHAR2);
Procedure write_doc( document_id IN VARCHAR2
,displ
ay_type IN VARCHAR2
,docum
ent IN OUT VARCHAR2
,docum
ent_type IN OUT VARCHAR2);
Procedure update_all( itemtype IN VARCHAR2
,itemkey IN
VARCHAR2
,actid IN
NUMBER
,funcmode IN
VARCHAR2
,resultout OUT
VARCHAR2);
Procedure create_process(g_tb_id Number);
end approve_pkg;
/
create or replace package body approve_pkg Is
Procedure judge_status(itemtype IN VARCHAR2
,itemkey IN
VARCHAR2
,actid IN
NUMBER
,funcmode IN
VARCHAR2
,resultout OUT
VARCHAR2)
Is
g_flag Number;
Begin
g_id := wf_engine.GetItemAttrNumber(itemtype,itemkey,'ID');
If funcmode = 'RUN' Then
Select max(flag) Into g_flag
From test_table Where id = g_id;
If g_flag = 1 Then
resultout := 'COMMIT';
Else
resultout := 'SAVE';
End If;
End If;
Exception
When Others Then
Null;
End judge_status;
Procedure update_status(itemtype IN VARCHAR2
,itemkey IN
VARCHAR2
,actid IN
NUMBER
,funcmode IN
VARCHAR2
,resultout OUT
VARCHAR2)
Is
Begin
g_id := wf_engine.GetItemAttrNumber(itemtype,itemkey,'ID');
If funcmode = 'RUN' Then
Update test_table Set flag = 1 Where id = g_id;
Commit;
End If;
resultout := wf_engine.eng_completed || ':' || wf_engine.eng_null ;
Return;
Exception
When Others Then
Null;
End update_status;
Procedure judge_money( itemtype IN VARCHAR2
,itemkey IN
VARCHAR2
,actid IN
NUMBER
,funcmode IN
VARCHAR2
,resultout OUT
VARCHAR2)
Is
Begin
g_money := wf_engine.GetItemAttrNumber(itemtype,itemkey,'BXJE');
If funcmode = 'RUN' Then
If g_money >= 1000 Then
resultout := 'DAYU';
Elsif g_money < 1000 Then
resultout := 'XIAOYU';
Else
resultout := Null;
End If;
End If;
Commit;
Exception
When Others Then
dbms_output.put_line(Sqlerrm);
End judge_money;
Procedure post_moeny( itemtype IN VARCHAR2
,itemkey IN
VARCHAR2
,actid IN
NUMBER
,funcmode IN
VARCHAR2
,resultout OUT
VARCHAR2)
Is
Begin
g_id := wf_engine.GetItemAttrNumber(itemtype,itemkey,'ID');
If funcmode = 'RUN' Then
Update test_table Set appro_flag = 1 Where id = g_id;
Commit;
End If;
resultout := wf_engine.eng_completed || ':' || wf_engine.eng_null ;
Exception
When Others Then
Null;
End post_moeny;
Procedure reject_moeny(itemtype IN VARCHAR2
,itemkey IN
VARCHAR2
,actid IN
NUMBER
,funcmode IN
VARCHAR2
,resultout OUT
VARCHAR2)
Is
Begin
g_id := wf_engine.GetItemAttrNumber(itemtype,itemkey,'ID');
If funcmode = 'RUN' Then
Update test_table Set flag = 0,appro_flag =0 Where id = g_id;
Commit;
End If;
resultout := wf_engine.eng_completed || ':' || wf_engine.eng_null ;
Exception
When Others Then
Null;
End reject_moeny;
Procedure loadto (itemtype IN VARCHAR2
,itemkey IN
VARCHAR2
,actid IN
NUMBER
,funcmode IN
VARCHAR2
,resultout OUT
VARCHAR2)
Is
Begin
g_id := wf_engine.GetItemAttrNumber(itemtype,itemkey,'ID');
If funcmode = 'RUN' Then
Update test_table Set post_flag = 1 Where id = g_id;
Commit;
End If;
resultout := wf_engine.eng_completed || ':' || wf_engine.eng_null ;
Exception
When Others Then
Null;
End loadto;
Procedure write_doc( document_id IN VARCHAR2
,displ
ay_type IN VARCHAR2
,docum
ent IN OUT VARCHAR2
,docum
ent_type IN OUT VARCHAR2)
Is
Begin
If display_type = 'text/html' Then
document := '<table width=400 border=1 bordercolor=red>';
For iLoop In (Select * From test_table /*Where id = document_id*/) Loop
document := document || '<tr>';
document := document || '<td>';
document := document || iLoop.Id;
document := document || '</td>';
document := document || '<td>';
document := document || iLoop.Money;
document := document || '</td>';
document := document || '</tr>';
End Loop;
document := document || '</table>';
End If;
document_type := display_type;
End write_doc;
Procedure update_all( itemtype IN VARCHAR2
,itemkey IN
VARCHAR2
,actid IN
NUMBER
,funcmode IN
VARCHAR2
,resultout OUT
VARCHAR2)
Is
g_post_id Number;
Begin
If funcmode = 'RUN' Then
Select wf_s.nextval Into g_post_id From dual;
Update test_table e Set e.post_flag = g_post_id;
Commit;
End If;
resultout := wf_engine.eng_completed || ':' || wf_engine.eng_null ;
End update_all;
Procedure create_process(g_tb_id Number)
Is
g_item_type Varchar2(20) := 'APPROVE';
g_item_key Varchar2(20);
g_process Varchar2(20) := 'FYBX';
g_send_name Varchar2(20);
g_appr_name Varchar2(20);
g_textname wf_engine.NameTabTyp;
g_textval wf_engine.TextTabTyp;
g_numname wf_engine.NameTabTyp;
g_numval wf_engine.NumTabTyp;
Begin
g_id := g_tb_id;
If g_id Is Null Then
g_id := 1;
End If;
Select wf_s.Nextval Into g_item_key From dual ;
g_item_key := g_item_type || g_item_key;
Select max(user_name),max(to_user_name),max(money)
Into g_send_name,g_appr_name,g_money
From test_table Where id = g_id;
g_textname(1) := 'BXR';
g_textname(2) := 'SPR';
g_textname(3) := 'URL';
g_textname(4) := 'FORM';

g_textval(1) := g_send_name;
g_textval(2) := g_appr_name;
g_textval(3) := 'http://www.google.com/intl/zh-cn';
g_textval(4) := 'FND_FNDCPMCP_SYS';
g_numname(1) := 'BXJE';
g_numname(2) := 'ID';
g_numval(1) := g_money;
g_numval(2) := g_id;

wf_engine.CreateProcess(g_item_type,g_item_key,g_process);
wf_engine.SetItemAttrTextArray(g_item_type,g_item_key,g_textname,g_textval);
wf_engine.SetItemAttrNumberArray(g_item_type,g_item_key,g_numname,g_numval);

wf_engine.SetItemAttrDocument(g_item_type,g_item_key,'DOC','PLSQL:approve_pkg.write
_doc/' || g_id);
wf_engine.SetItemAttrDate(g_item_type,g_item_key,'DATE',Sysdate);
wf_engine.StartProcess(g_item_type,g_item_key);
Commit;
Exception
When Others Then
dbms_output.put_line(Sqlerrm);
End create_process;
end approve_pkg;

You might also like