Professional Documents
Culture Documents
Oracle Workflow Business Event System and PLSQL
Oracle Workflow Business Event System and PLSQL
%XVLQHVV(YHQW6\VWHPDQG
3/64/'HYHORSPHQW*XLGHOLQHV
$Q2UDFOH7HFKQLFDO:KLWH3DSHU
2FWREHU
Oracle Workflow Release 2.6.2 Business Event System and PL/SQL Development Guidelines Page 2
2UDFOH:RUNIORZ5HOHDVH%XVLQHVV(YHQW6\VWHP
DQG3/64/'HYHORSPHQW*XLGHOLQHV
([HFXWLYH2YHUYLHZ
2UDFOH:RUNIORZ%XVLQHVV(YHQW6\VWHP%DVLFV
:KDWLVWKH2UDFOH:RUNIORZ%XVLQHVV(YHQW6\VWHP"
:KDWLVWKH%XVLQHVV(YHQW6\VWHP%(6)UDPHZRUN"
:KDWLVDEXVLQHVVHYHQW"
:KDWLVDQHYHQWVXEVFULSWLRQ"
:K\GHILQHEXVLQHVVHYHQWV"
,DOUHDG\XVH2UDFOH:RUNIORZ'R,KDYHWRPDNHDQ\FRGH
FKDQJHVIRU2UDFOH:RUNIORZ%XVLQHVV(YHQW6\VWHP"
:HDUHFRQVLGHULQJDGGLQJVRPHZRUNIORZVWRRXUSURGXFW&DQZH
ODXQFKWKH:RUNIORZVGLUHFWO\LQVWHDGRIXVLQJWKH%(6)UDPHZRUN
$3,V"
7KH(YHQW0DQDJHU
'HILQLQJ(YHQWV
,QWHUQDO1DPH
'LVSOD\1DPH
'HVFULSWLRQ
6WDWXV
*HQHUDWH)XQFWLRQ
2ZQHU1DPHPDQGDWRU\
2ZQHU7DJPDQGDWRU\
'HILQLQJ(YHQW6XEVFULSWLRQV
6XEVFULEHU6\VWHP
7ULJJHULQJ&RQGLWLRQ6RXUFH7\SH
7ULJJHULQJ&RQGLWLRQ(YHQW)LOWHU
7ULJJHULQJ&RQGLWLRQ6RXUFH$JHQW
([HFXWLRQ&RQWURO3KDVHPDQGDWRU\
([HFXWLRQ&RQWURO6WDWXV
([HFXWLRQ&RQWURO5XOH'DWD
$FWLRQ5XOH)XQFWLRQUHTXLUHG
$FWLRQ:RUNIORZ,WHP7\SHDQG:RUNIORZ3URFHVV1DPH
RSWLRQDO
$FWLRQ2XW$JHQWDQG7R$JHQWRSWLRQDO
$FWLRQ3ULRULW\RSWLRQDO
$FWLRQ3DUDPHWHUVRSWLRQDO
'RFXPHQWDWLRQ2ZQHU1DPHPDQGDWRU\
Oracle Workflow Release 2.6.2 Business Event System and PL/SQL Development Guidelines Page 3
'RFXPHQWDWLRQ2ZQHU7DJPDQGDWRU\
'RFXPHQWDWLRQ'HVFULSWLRQ
%XLOGLQJ:RUNIORZ3URFHVVHVXVLQJ%XVLQHVV(YHQWV
5HFHLYLQJ(YHQWVLQD:RUNIORZ3URFHVV
6HWWLQJ,WHP$WWULEXWHV
5DLVLQJ(YHQWVIURP:RUNIORZ
6HQGLQJ%XVLQHVV(YHQWVIURPD:RUNIORZ3URFHVV
5DLVLQJ%XVLQHVV(YHQWVIURP3/64/&RGH
:KHUHVKRXOG,SXWFDOOVWR5DLVH(YHQW
´7HVWLQJµ%XVLQHVV(YHQWV
6DPSOH3/64/&RGH
:ULWLQJ(YHQW*HQHUDWH)XQFWLRQV
:ULWLQJ(YHQW6XEVFULSWLRQ5XOH)XQFWLRQV
'HIHUUHG3URFHVVLQJ
'HIHUUHG6XEVFULSWLRQV
'HIHUUHG'LVSDWFKLQJRI(YHQWV
'HIHUULQJRI:RUNIORZV
([WHQGLQJ%XVLQHVV(YHQW6\VWHP(UURU+DQGOLQJ
8VHIXO'HEXJJLQJ7LSV
6DPSOH'HEXJ2XWSXW
&RQFOXVLRQ
Oracle Workflow Release 2.6.2 Business Event System and PL/SQL Development Guidelines Page 4
2UDFOH:RUNIORZ5HOHDVH%XVLQHVV(YHQW6\VWHP
DQG3/64/'HYHORSPHQW*XLGHOLQHV
EXECUTIVE OVERVIEW
7KHREMHFWLYHRIWKLVGRFXPHQWLVWRGHVFULEHGHYHORSPHQWVWDQGDUGVZKLFKFDQEH
IROORZHGZKHQEXLOGLQJDSSOLFDWLRQVXVLQJWKH2UDFOH:RUNIORZ5HOHDVH
%XVLQHVV(YHQW6\VWHPDQG3/64/,WH[SODLQVSULQFLSOHVHVVHQWLDOIRU
XQGHUVWDQGLQJDQGGHYHORSLQJZLWKWKH2UDFOH:RUNIORZ%XVLQHVV(YHQW6\VWHP
DVZHOODVSURYLGLQJDIUDPHZRUNIRUGHYHORSPHQWVWDQGDUGV)RUVSHFLILFGHWDLOVRI
WKHFRPSRQHQWVRI2UDFOH:RUNIORZSOHDVHUHIHUWRWKH2UDFOH:RUNIORZ*XLGH
7KLVGRFXPHQWFRQWDLQVJHQHUDOJXLGHOLQHVDQGQDPLQJVWDQGDUGV\RXVKRXOG
IROORZZKHQXVLQJWKH%XVLQHVV(YHQW6\VWHP
Oracle Workflow Release 2.6.2 Business Event System and PL/SQL Development Guidelines Page 5
What is a business event?
$EXVLQHVVHYHQWLVVLPSO\DQ\HYHQWZKLFKPLJKWEHRILQWHUHVWWRFXVWRPHUVRU
GHYHORSPHQWWHDPV)RUH[DPSOHWKHFUHDWLRQRIDVDOHVRUGHUPLJKWEHDEXVLQHVV
HYHQW7KHXSGDWHRIDVDOHVRUGHUOLQHPLJKWEHDQRWKHUH[DPSOHRIDEXVLQHVV
HYHQW
I already use Oracle Workflow 2.5. Do I have to make any code changes
for Oracle Workflow 2.6 Business Event System?
1R7KHH[LVWLQJ:RUNIORZ(QJLQH$3,VWRFUHDWHDQGVWDUWZRUNIORZSURFHVVHV
DUHVWLOOIXOO\VXSSRUWHG+RZHYHUZHVWURQJO\UHFRPPHQGWKDW\RXPDNHDQ
HIIRUWWRODXQFKWKHVHZRUNIORZSURFHVVHVXVLQJWKH%XVLQHVV(YHQW6\VWHP
)UDPHZRUNDV\RXZLOOSURYLGHDPRUHFRQVLVWHQWSURIHVVLRQDOFXVWRPL]DWLRQ
DSSURDFKIRU\RXUFXVWRPHUV
Oracle Workflow Release 2.6.2 Business Event System and PL/SQL Development Guidelines Page 6
We are considering adding some workflows to our product. Can we
launch the Workflows directly instead of using the BES Framework
APIs?
1RZLWKWKHH[FHSWLRQRIIRUFHGV\QFKURQRXVZRUNIORZV
<RXPXVWXVHWKH%XVLQHVV(YHQW6\VWHP5DLVH$3,DQGKDYHDQHQDEOHG
VXEVFULSWLRQZKLFKZLOOODXQFKWKHZRUNIORZSURFHVV:KHQ\RXUDLVHWKHHYHQW
\RXUFXVWRPHUVPD\DOVRZDQWWRDGGWKHLURZQVXEVFULSWLRQVWRWKLVHYHQW
,I\RXGLUHFWO\ODXQFKWKHZRUNIORZ\RXDUHQHHGOHVVO\IRUFLQJ\RXUFXVWRPHUVWR
PRGLI\\RXUVWDQGDUGZRUNIORZZKHQWKH\PD\QRWQHHGWRLI\RXKDGUDLVHGD
EXVLQHVVHYHQW
Oracle Workflow Release 2.6.2 Business Event System and PL/SQL Development Guidelines Page 7
THE EVENT MANAGER
7KH(YHQW0DQDJHUFRQWDLQVWKHUHJLVWU\RIV\VWHPVDJHQWVEXVLQHVVHYHQWVDQG
VXEVFULSWLRQVWREXVLQHVVHYHQWV
Defining Events
Internal Name
:KHQ\RXGHILQHDQHYHQWLQWKH(YHQW0DQDJHU\RXPXVWDVVLJQLWDXQLTXH
LQWHUQDOQDPHZKLFKLVFDVHVHQVLWLYH7KHIRUPDWIRUWKHVHLQWHUQDOQDPHVLVD
FRPSRXQGVWUXFWXUHRILGHQWLILHUVVHSDUDWHGE\SHULRGVLVDVIROORZV
<company>.<productfamily>.<product>.<component>.<object>.<event>
7KLVIRUPDWDOORZV\RXWRRUJDQL]HWKHHYHQWV\RXGHILQHLQWRDFODVVLILFDWLRQ
KLHUDUFK\
Display Name
7KH'LVSOD\1DPHLVZKDWZLOOVKRZLQWKH(GLW(YHQWOLVW
Description
$QRSWLRQDOGHVFULSWLRQ
Status
'LVDEOHGLIWKHUHDUHQRVXEVFULSWLRQVVKLSSHGZLWKWKLVHYHQW
(QDEOHGLIVXEVFULSWLRQVDUHVKLSSHGZLWKWKHHYHQW
Generate Function
7KH*HQHUDWHIXQFWLRQLVDFDOOEDFN3/64/$3,ZKLFKFDQJHQHUDWHDQ;0/
GRFXPHQWIURPWKHHYHQWNH\DQGSDUDPHWHUOLVW
$Q\VXEVFULSWLRQVZKLFKUHTXLUHWKHPHVVDJHWREHJHQHUDWHGXVLQJWKH*HQHUDWH
IXQFWLRQVKRXOGEHGHIHUUHG
7KH2ZQHU1DPHVKRXOGEH\RXUSURGXFWQDPH
7KH2ZQHU7DJVKRXOGEH\RXUOHWWHUSURGXFWFRGH
Subscriber: System
7KLVZLOOXVXDOO\EHWKHORFDOV\VWHPWKHV\VWHPRQZKLFKWKHVXEVFULSWLRQFRGHLV
WRUXQ
Oracle Workflow Release 2.6.2 Business Event System and PL/SQL Development Guidelines Page 8
Triggering Condition: Source Type
6HWWKHVRXUFHW\SHWR/RFDOLIWKHVXEVFULSWLRQDSSOLHVRQO\WRHYHQWVUDLVHGRQWKH
VXEVFULELQJV\VWHP
6HWWKHVRXUFHW\SHWR([WHUQDOLIWKHVXEVFULSWLRQDSSOLHVRQO\WRHYHQWVUHFHLYHG
E\DQLQERXQGDJHQWRQWKHVXEVFULELQJV\VWHP
6HWWKHVRXUFHW\SHWR(UURULIWKHVXEVFULSWLRQDSSOLHVRQO\WRHUURUHGHYHQWV
GHTXHXHGIURPWKH:)B(5525TXHXH
6HOHFWWKHHYHQWWKDWWKLVVXEVFULSWLRQLVIRU
/HDYHEODQN
<RXVKRXOGRQO\XVHWKLVILHOGLQH[FHSWLRQDOFDVHV,I\RXVSHFLI\DVRXUFHDJHQW
WKHQWKHVXEVFULSWLRQLVH[HFXWHGRQO\ZKHQWKHWULJJHULQJHYHQWLVUHFHLYHGIURP
WKDWDJHQW
(QWHUDSKDVHQXPEHUIRUWKHVXEVFULSWLRQWRVSHFLI\WKHRUGHULQZKLFK
VXEVFULSWLRQVWKDWDSSO\WRWKHVDPHHYHQWDUHH[HFXWHG
9DOLGYDOXHVDUHIRUVXEVFULSWLRQVZKLFKDUHWREHH[HFXWHGLPPHGLDWHO\DQG
DQGDERYHIRUVXEVFULSWLRQVZKLFKDUHWREHGHIHUUHG
%\GHIDXOWVHHGHGVXEVFULSWLRQVVKRXOGKDYHDSKDVHQXPEHURIRUKLJKHU
'HIHUULQJVXEVFULSWLRQSURFHVVLQJZLOOSUHYHQWSHUIRUPDQFHLVVXHVZLWKRQOLQH
XVHUVLI\RXKDYHFRVWO\VXEVFULSWLRQSURFHVVLQJ
6HOHFW(QDEOHGRU'LVDEOHGDVWKHVXEVFULSWLRQVWDWXV,I\RXGLVDEOHDVXEVFULSWLRQ
LWVWLOOUHPDLQVLQWKH(YHQW6XEVFULSWLRQVOLVWIRUUHIHUHQFHEXWLWFDQQRORQJHUEH
DFWLYHO\XVHGWRUHVSRQGWRHYHQWV
.H\WKHVXEVFULSWLRQUHTXLUHVRQO\WKHHYHQWNH\
0HVVDJHWKHVXEVFULSWLRQUHTXLUHVWKHFRPSOHWHHYHQWGDWDWREHJHQHUDWHG,I
\RXVSHFLILHGD*HQHUDWHIXQFWLRQIRU\RXUEXVLQHVVHYHQW\RXVKRXOGFKRRVH
0HVVDJH
6XEVFULSWLRQVZKLFKKDYHWKH5XOH'DWDVHWWR0HVVDJHVKRXOGDOZD\VEHGHIHUUHG
SKDVHQXPEHUVHWWRRUJUHDWHU'HIHUULQJVXEVFULSWLRQSURFHVVLQJZLOO
SUHYHQWSHUIRUPDQFHLVVXHVZLWKRQOLQHXVHUV
Oracle Workflow Release 2.6.2 Business Event System and PL/SQL Development Guidelines Page 9
Action: Rule Function (required)
,QPRVWFDVHV\RXVKRXOGDOZD\VXVHZIBUXOHGHIDXOWBUXOH7KLVUXOHIXQFWLRQZLOO
HQDEOH\RXWRODXQFKDZRUNIORZSURFHVVRUVHQGDEXVLQHVVHYHQWPHVVDJHWRDQ
DJHQW
,QVRPHFDVHV\RXPD\ZDQWWRZULWH\RXUVSHFLDOL]HGUXOHIXQFWLRQV
&XVWRPHUVPD\ZULWHFXVWRPUXOHIXQFWLRQVZKLFKPD\FRQWDLQYDOLGDWLRQORJLF
ZKLFKFDQEHVZLWFKHGRQRURIIE\HQDEOLQJRUGLVDEOLQJWKHVXEVFULSWLRQV
(QWHU\RXU:RUNIORZ,WHP7\SHDQG:RUNIORZ3URFHVV1DPH$ZRUNIORZ
SURFHVVFDOOHGE\WKH%XVLQHVV(YHQW6\VWHPPXVWKDYHDVLWVILUVWDFWLYLW\D
5HFHLYHDFWLYLW\QRWD6WDUWDFWLYLW\
2UDFOH:RUNIORZFRQWUROVWKHH[HFXWLRQRIDSUHGHILQHGVHULHVRIDFWLYLWLHV7KH
QHHGIRUVRSKLVWLFDWHGEUDQFKLQJORJLFPRGHOLQJFRQVWUXFWVDQGWKHDELOLW\WR
LQFOXGHKXPDQUHVSRQVHVWKURXJKQRWLILFDWLRQVPDNHVLWDVXLWDEOHFKRLFHIRU
PRGHOLQJ\RXUEXVLQHVVSURFHVVDVDZRUNIORZSURFHVV
)RULQWHJUDWLRQ\RXUFXVWRPHUFRXOGHQWHUWKLVGDWDDVSDUWRIWKHFRQILJXUDWLRQRI
V\VWHPV
7KLVZLOODIIHFWWKHGHTXHXHRUGHURIPHVVDJHV/HDYHDV1RUPDO)RU'HIHUUHG
6XEVFULSWLRQVWKHSULRULW\LVXVHGWRFRQWUROWKHGHTXHXHRUGHULQJ
7KH3DUDPHWHUVFROXPQFDQEHXVHGWRDGGVSDFHGHOLPLWHGQDPH YDOXHSDLUV
ZKLFKFDQEHDFFHVVHGE\DUXOHIXQFWLRQ7KHVHQDPH YDOXHSDLUVFRXOGEHXVHG
WRFRQWUROWKHEHKDYLRURIWKHUXOHIXQFWLRQDQGWKXVWKHVXEVFULSWLRQ
7KH2ZQHU1DPHVKRXOGEH\RXUSURGXFWQDPH
7KH2ZQHU7DJVKRXOGEH\RXUOHWWHUSURGXFWFRGH
Documentation: Description
$Q\XVHIXOLQIRUPDWLRQ\RXPLJKWZDQWWRGRFXPHQWDERXWWKHVXEVFULSWLRQ
Oracle Workflow Release 2.6.2 Business Event System and PL/SQL Development Guidelines Page 10
BUILDING WORKFLOW PROCESSES USING BUSINESS EVENTS
$VLPSOHZRUNIORZSURFHVVWKDWFDQEHODXQFKHGE\WKH%XVLQHVV(YHQW
6\VWHP
7KH(YHQW'HWDLOVSURSHUW\SDJHRIWKH5HFHLYH(YHQWDFWLYLW\7KH5HFHLYH
(YHQWFDQRSWLRQDOO\FDSWXUHWKHHYHQWQDPHHYHQWNH\DQGHYHQWPHVVDJH
DQGVWRUHWKHVHLQWKHVSHFLILHGLWHPDWWULEXWHV
Oracle Workflow Release 2.6.2 Business Event System and PL/SQL Development Guidelines Page 11
Setting Item Attributes
$EXVLQHVVHYHQWPHVVDJHLVEXLOWRQWKH:)B(9(17B7DEVWUDFWGDWDW\SH7KH
DEVWUDFWGDWDW\SHFRQWDLQVPHVVDJHKHDGHUSURSHUWLHVLQFOXGLQJDQDUUD\
:)B3$5$0(7(5B/,67B7ZKLFKFDQFRQWDLQXSWRQDPHYDOXHSDLUVDQG
DSD\ORDG
SQL> desc wf_event_t
PRIORITY NUMBER
SEND_DATE DATE
RECEIVE_DATE DATE
CORRELATION_ID VARCHAR2(240)
PARAMETER_LIST WF_PARAMETER_LIST_T
EVENT_NAME VARCHAR2(240)
EVENT_KEY VARCHAR2(240)
EVENT_DATA CLOB
FROM_AGENT WF_AGENT_T
TO_AGENT WF_AGENT_T
ERROR_SUBSCRIPTION RAW(16)
ERROR_MESSAGE VARCHAR2(4000)
ERROR_STACK VARCHAR2(4000)
:KHQDEXVLQHVVHYHQWPHVVDJHVWDUWVRUFRQWLQXHVDZRUNIORZSURFHVVWKHHQWLUH
FRQWHQWVRIWKHYDU\LQJDUUD\DUHFUHDWHGDVLWHPDWWULEXWHV,IWKHLWHPDWWULEXWH
DOUHDG\H[LVWVWKHQWKH:RUNIORZ(QJLQHZLOOVHWWKHYDOXHRIWKHLWHPDWWULEXWH,I
WKHLWHPDWWULEXWHGRHVQRWH[LVWWKHQWKH:RUNIORZ(QJLQHZLOOFUHDWHWKHLWHP
DWWULEXWHDQGWKHQVHWWKHYDOXH
Oracle Workflow Release 2.6.2 Business Event System and PL/SQL Development Guidelines Page 12
• &UHDWHD5DLVHHYHQWDFWLYLW\LQ\RXUZRUNIORZSURFHVV
• 2SWLRQDOO\GHILQHDVPDQ\HYHQWDFWLYLW\DWWULEXWHVDVUHTXLUHG
• 'UDJWKH5DLVHHYHQWDFWLYLW\RQWRDZRUNIORZSURFHVV
• &RQILJXUHWKHHYHQWDFWLYLW\DWWULEXWHVWREHSRSXODWHGE\YDOXHVIURP
FRQVWDQWVRULWHPDWWULEXWHV
([DPSOHRID5DLVH(YHQW$FWLYLW\ZLWK´3DUDPHWHUµDFWLYLW\DWWULEXWHV
7KHVHDFWLYLW\DWWULEXWHVFDQWKHQEHVHWLQDZRUNIORZSURFHVVDVUHTXLUHG
Oracle Workflow Release 2.6.2 Business Event System and PL/SQL Development Guidelines Page 13
2SWLRQDORYHUULGHVDYDLODEOHIURPWKH6HQGHYHQWDFWLYLW\(YHQW'HWDLOV
SURSHUW\SDJH
7KH2UDFOH:RUNIORZ6WDQGDUGLWHPW\SHKDVQXPEHURIIXQFWLRQDFWLYLWLHVZKLFK
FDQEHXVHGDFFHVVHYHQWKHDGHUSURSHUWLHVDQGWKH;0/HYHQWPHVVDJHSD\ORDG
7KHVHDUH
• &RPSDUH(YHQW3URSHUW\5RXWHRQKHDGHUSURSHUWLHV
• *HW(YHQW3URSHUW\*HWHYHQWKHDGHUSURSHUW\DQGVHWLQWRDQLWHP
DWWULEXWH
• 6HW(YHQW3URSHUW\6HWHLWKHUDFRQVWDQWRUDQLWHPDWWULEXWHLQWRDQHYHQW
KHDGHUSURSHUW\
• ;0/&RPSDUH7DJ9DOXH'DWH1XPEHU7H[W5RXWHRQFRQWHQWVRIDQ
;0/WDJVHWZLWKLQWKHHYHQWPHVVDJHSD\ORDGVWDQGDORQH:RUNIORZ
RQO\
• ;0/*HW7DJ9DOXH*HWFRQWHQWVRIDQ;0/WDJVHWZLWKLQDQHYHQW
PHVVDJHSD\ORDGDQGVHWLQWRDQLWHPDWWULEXWHVWDQGDORQH:RUNIORZ
RQO\
• ;0/7UDQVIRUP$SSO\DQ;0/VW\OHVKHHWWRDQHYHQWPHVVDJHSD\ORDG
VWDQGDORQH:RUNIORZRQO\
Oracle Workflow Release 2.6.2 Business Event System and PL/SQL Development Guidelines Page 14
RAISING BUSINESS EVENTS FROM PL/SQL CODE
(YHQWVXEVFULSWLRQVPD\UHTXLUHDPHVVDJH
<RXFDQLQGLFDWHWKLVZKHQ\RXDUHGHILQLQJVXEVFULSWLRQVXVLQJWKH5XOH'DWD
ILHOG,IWKH5XOH'DWDLV¶.H\·WKHVXEVFULSWLRQRQO\UHTXLUHVKHDGHUSURSHUWLHVIRU
SURFHVVLQJ,IWKH5XOH'DWDLV¶0HVVDJH·WKHVXEVFULSWLRQUHTXLUHVKHDGHU
SURSHUWLHVDQGDPHVVDJHSD\ORDGIRUSURFHVVLQJ7KHPHVVDJHSD\ORDGLVW\SLFDOO\
DQ;0/GRFXPHQW
,I\RXZLOOKDYHDFFHVVWRWKH;0/GRFXPHQWRUDQ$3,ZKLFKFDQJHQHUDWHWKH
;0/GRFXPHQWWKDWWKHEXVLQHVVHYHQWLVUHODWHGWR\RXVKRXOGILUVWWHVWZKHWKHU
WKHUHDUHDQ\VXEVFULSWLRQVWRWKDWEXVLQHVVHYHQWZKLFKZLOOUHTXLUHWKH;0/
GRFXPHQW7KLVLVGRQHE\XVLQJWKHZIBHYHQWWHVW$3,ZKLFKZLOOUHWXUQ
0(66$*(LIWKHUHLVDVXEVFULSWLRQZKLFKUHTXLUHVWKH;0/GRFXPHQWRU.(<
LIQRQHRIWKHVXEVFULSWLRQVUHTXLUHWKH;0/GRFXPHQW7KHWHVW$3,PD\DOVR
UHWXUQ121(EXW\RXPXVWQRWEUDQFK\RXUFRGHIRUWKLVUHVXOWWRGHWHUPLQHLI
\RXVKRXOGUDLVHWKHHYHQWRUQRWOHWWKH%XVLQHVV(YHQW'LVSDWFKHUORRNDIWHUWKLV
SURFHVVLQJ
,I\RXGRQRWKDYHDFFHVVWRWKH;0/'RFXPHQW\RXGRQRWQHHGWRGRDQ\WKLQJ
²WKH%XVLQHVV(YHQW6\VWHPFRGHZLOOGHWHUPLQHZKHWKHURUQRWDPHVVDJHLV
UHTXLUHGDQGJHQHUDWHWKHPHVVDJHLIUHTXLUHG
7RUDLVHDQHYHQWIURP3/64/FRGHXVHWKHIROORZLQJWHPSODWH
declare
/*
** Optional - if complete event data is available, declare these.
** l_xmldocument varchar2(32000);
** l_eventdata clob;
** l_message varchar2(10);
*/
begin
Oracle Workflow Release 2.6.2 Business Event System and PL/SQL Development Guidelines Page 15
/*
** We know that we are going to raise an event, so
** we will set some parameters now, these will become
** item attributes in any workflow processes that called
** by the business event system due to this business event
** Up to 100 name/value pairs. The fewer the parameters the
** better performance will be.
*/
wf_event.AddParameterToList(p_name=>‘ORG_ID’,
p_value=>’<ORG_ID Value>’,
p_parameterlist=>l_parameter_list);
wf_event.AddParameterToList(p_name=>‘<Parameter Name>’,
p_value=>’<Parameter Value>’,
p_parameterlist=>l_parameter_list);
wf_event.AddParameterToList(p_name=>‘<Parameter Name>’,
p_value=>’<Parameter Value>’,
p_parameterlist=>l_parameter_list);
/*
** ***** OPTIONAL *****
** In most cases, you do not need to do this.
**
** If the complete event data is easily available, we can
** optionally test if any subscriptions to this event
** require it (rule data = Message).
** From PL/SQL, you probably won’t need to do this
**
** l_message := wf_event.test('<EVENT_NAME>');
**
** If we do require a message, and we have the message now,
** set it; else we can just rely on the Event Generate
** Function callback code. Then Raise the Event with the
** required parameters. From PL/SQL, you probably won’t need
** to do this.
**
** if l_message = 'MESSAGE' then
**
** if l_xmldocument is not null then
** dbms_lob.createtemporary(l_eventdata, FALSE, DBMS_LOB.CALL);
** dbms_lob.write(l_eventdata, length(l_xmldocument), 1,
Oracle Workflow Release 2.6.2 Business Event System and PL/SQL Development Guidelines Page 16
** l_xmldocument);
** -- Raise the Event with the message
** wf_event.raise( p_event_name => ’<EVENT_NAME>’,
** p_event_key => ’<EVENT_KEY>’,
** p_event_data => l_eventdata,
** p_parameters => l_parameter_list);
**
** else
**
** -- Raise the Event without the message
** -- The Generate Function Callback will create the XML Document
** -- Also possible that an API might be called from here
** -- to generate the XML document
** wf_event.raise( p_event_name => ’<EVENT_NAME>’,
** p_event_key => ’<EVENT_KEY>’,
** p_parameters => l_parameter_list);
**
** end if;
**
** elsif
**
** l_message = ’KEY’ then
** -- Raise the Event
** wf_event.raise( p_event_name => <EVENT_NAME>,
** p_event_key => <EVENT_KEY>,
** p_parameters => l_parameter_list);
**
** end if;
*/
/*
** Raise the event with no XML document, if an XML
** document is required to be generated, the Generate Function
** will automatically be run
*/
l_parameter_list.DELETE;
Oracle Workflow Release 2.6.2 Business Event System and PL/SQL Development Guidelines Page 17
/*
** Up to your own code to commit the transaction
*/
commit;
/*
** Up to your code to handle any major exceptions
** The Business Event System is unlikely to return any errors
** As long as the Raise can be submitted, any errors will be placed
** on the WF_ERROR queue and a notification sent to SYSADMIN
*/
exception
when others then
<YOUR ERROR CODE>;
end;
Oracle Workflow Release 2.6.2 Business Event System and PL/SQL Development Guidelines Page 18
WRITING EVENT GENERATE FUNCTIONS
:KHQ\RXGHILQHDQHYHQWLQWKH%XVLQHVV(YHQW6\VWHP\RXFDQDVVLJQD
*HQHUDWHIXQFWLRQWKDWFDQSURGXFHWKHFRPSOHWHHYHQWGDWDW\SLFDOO\DQ;0/
GRFXPHQWIURPWKHHYHQWQDPHHYHQWNH\DQGSDUDPHWHUOLVW
7KH(YHQW0DQDJHUFDOOVWKH*HQHUDWHIXQFWLRQZKHQDQDSSOLFDWLRQUDLVHVWKH
HYHQWZLWKRXWSURYLGLQJHYHQWGDWDDQGLWLVSURFHVVLQJWKHILUVWVXEVFULSWLRQWRWKH
HYHQWZKLFKUHTXLUHVWKHHYHQWGDWD7KH*HQHUDWHIXQFWLRQUHWXUQVWKHHYHQWGDWD
LQFOREIRUPDW
:RUNIORZFRPHVZLWKRQH*HQHUDWHIXQFWLRQ
• :)B(9(17B)81&7,216B3.**(1(5$7(²JHQHUDWHV;0/
GRFXPHQWVZKLFKUHSUHVHQW%XVLQHVV(YHQW6\VWHPPHWDGDWD
7KH3/64/IXQFWLRQWKDWJHQHUDWHVWKHHYHQWGDWDPXVWKDYHWKHIROORZLQJ
VWDQGDUG$3,
function <function_name> (p_event_name in varchar2,
p_event_key in varchar2
p_parameter_list in wf_parameter_list_t
default null)
return clob;
7KHDUJXPHQWVIRUWKHIXQFWLRQDUHDVIROORZV
• SBHYHQWBQDPH7KHLQWHUQDOQDPHRIWKHHYHQW
• SBHYHQWBNH\$VWULQJJHQHUDWHGZKHQWKHHYHQWRFFXUVZLWKLQDSURJUDP
RUDSSOLFDWLRQ7KHHYHQWNH\XQLTXHO\LGHQWLILHVDVSHFLILFLQVWDQFHRIWKH
HYHQW
• SBSDUDPHWHUBOLVW$QRSWLRQDOOLVWRIDGGLWLRQDOSDUDPHWHUQDPHDQGYDOXH
SDLUVIRUWKHHYHQW
Oracle Workflow Release 2.6.2 Business Event System and PL/SQL Development Guidelines Page 19
WRITING EVENT SUBSCRIPTION RULE FUNCTIONS
:KHQ\RXGHILQHDQHYHQWVXEVFULSWLRQ\RXPXVWGHILQHD3/64/IXQFWLRQFDOOHG
DUXOHIXQFWLRQZKLFKLVH[HFXWHGE\WKH'LVSDWFKHU7KLVUXOHIXQFWLRQFRQWUROV
WKHEHKDYLRURIWKHHYHQWVXEVFULSWLRQLWFDOOVWRWKH:RUNIORZ(QJLQHWRODXQFKD
ZRUNIORZSURFHVVDQGFDOOVWRWKHVHQG$3,WRHQTXHXHPHVVDJHV
:RUNIORZFRPHVZLWKWZRPDLQUXOHIXQFWLRQV
• :)B58/('()$8/7B58/(²WKLVLVWKHUXOHIXQFWLRQ\RXZRXOG
XVHIRU\RXUHYHQWVXEVFULSWLRQV,WLQFOXGHVFDOOVWRWKH:RUNIORZ(QJLQH
DQGRUVHQG$3,
• :)B58/((5525B58/(²WKLVLVWKHUXOHIXQFWLRQ\RXVKRXOGXVH
IRUDQ\VXEVFULSWLRQVZLWKDVRXUFHW\SHRI¶(5525·
,I\RXZLVKWRZULWH\RXURZQUXOHIXQFWLRQIROORZWKLVSURJUDPPDWLFWHPSODWH
function <function_name> (p_subscription_guid in raw,
p_event in out WF_EVENT_T) return varchar2 is
<local declarations>
begin
<your executable statements>
return ’SUCCESS’;
exception
when others then
WF_CORE.CONTEXT(’<package name>’, ’<function name>’,
p_event.getEventName( ), p_subscription_guid);
WF_EVENT.setErrorInfo(p_event, ’ERROR’);
return ’ERROR’;
end;
&XVWRPUXOHIXQFWLRQVDUHPHDQWIRUFXVWRPHUVFRQVXOWDQWVDQGSDUWQHUVWR
FRQILJXUHWKHEHKDYLRURIWKHDSSOLFDWLRQSURGXFW
Oracle Workflow Release 2.6.2 Business Event System and PL/SQL Development Guidelines Page 20
DEFERRED PROCESSING
7KH2UDFOH:RUNIORZ%XVLQHVV(YHQW6\VWHPVXSSRUWV
• 'HIHUUHGVXEVFULSWLRQV²WKLVLVZKDW\RXVKRXOGXVHLQPRVWFDVHVZKHQ
\RXGHILQHVXEVFULSWLRQV
• 'HIHUUHGGLVSDWFKLQJRIHYHQWV
• 'HIHUULQJRIZRUNIORZV
'HIHUUHGHYHQWVDQGVXEVFULSWLRQVDUHSODFHGRQWKH:)B'()(55('DJHQW
$OO'HIHUUHG(YHQWVDQG6XEVFULSWLRQVDUHSURFHVVHGZKHQWKH:RUNIORZ
$JHQW/LVWHQHULVVXEPLWWHGWRUXQRQWKH:)B'()(55('DJHQW
Deferred Subscriptions
:KHQDEXVLQHVVHYHQWLVGLVSDWFKHGV\QFKURQRXVO\DOOVXEVFULSWLRQVZLWKDSKDVH
RIWRZLOOEHSURFHVVHG$Q\VXEVFULSWLRQVZLWKDSKDVHDERYHZLOOEH
GHIHUUHG7KLVLVFRQILJXUDEOHZLWKRXWFKDQJLQJFRGH²WKHVXEVFULSWLRQSKDVHFDQ
EHFKDQJHVZLWKRXWDQ\FXVWRPL]DWLRQ
$Q\EXVLQHVVHYHQWVUDLVHGLQWKDWVHVVLRQZLOOEHGHIHUUHG7RUHVHWWKHVHVVLRQVR
HYHQWVFDQEHGLVSDWFKHGV\QFKURQRXVO\LQVHUWWKHIROORZLQJOLQHRIFRGH
Wf_event.SetDispatchMode(‘SYNC’);
Deferring of Workflows
:RUNIORZSURFHVVLQJFDQEHGHIHUUHGLQDQXPEHURIZD\V6HHWKH2UDFOH:RUNIORZ
*XLGH7\SLFDOO\\RXFDQGHIHUDZRUNIORZSURFHVVE\VHWWLQJWKHFRVWRIDQ
DFWLYLW\WREHJUHDWHUWKDQ
Oracle Workflow Release 2.6.2 Business Event System and PL/SQL Development Guidelines Page 21
EXTENDING BUSINESS EVENT SYSTEM ERROR HANDLING
$Q\HUURUVWKDWRFFXUGXULQJDZRUNIORZSURFHVVDUHFDSWXUHGE\WKH:RUNIORZ
(QJLQHDQGHLWKHUWKHGHIDXOWHUURUSURFHVVLVODXQFKHGRUDXVHUGHILQHGHUURU
SURFHVVLVODXQFKHG(UURUKDQGOLQJLQWKH%XVLQHVV(YHQW6\VWHPIROORZVWKHVDPH
PRGHO
%\GHIDXOWLIDQHUURURUZDUQLQJLVHQFRXQWHUHGGXULQJVXEVFULSWLRQSURFHVVLQJD
PHVVDJHLVSXWRQWKH:)B(5525DJHQW,IWKH5XOH)XQFWLRQUHWXUQV
:$51,1*VXEVFULSWLRQSURFHVVLQJFRQWLQXHV,IWKH5XOH)XQFWLRQUHWXUQV
(5525VXEVFULSWLRQSURFHVVLQJIRUWKLVHYHQWGRHVQRWFRQWLQXHDQGDQ\
VXEVFULSWLRQVZKLFKZHUHDOUHDG\UXQIRUWKDWHYHQWDUHUROOHGEDFN
3HULRGLFDOO\DQDJHQWOLVWHQHUUXQVRQ:)B(5525DQGDIWHUGHTXHXLQJWKH
HUURUHGPHVVDJHWKH'LVSDWFKHUORRNVIRUHQDEOHGVXEVFULSWLRQVWRWKLVHYHQWZLWK
D6RXUFH7\SHRI(5525,IWKHUHDUHQRHQDEOHGVXEVFULSWLRQVIRUWKLVHYHQW
ZLWKD6RXUFH7\SHRI(5525WKHQWKHVXEVFULSWLRQWRWKH
RUDFOHDSSVZIHYHQWXQH[SHFWHGHYHQWZLWKD6RXUFH7\SHRI(5525LVUXQ
7KHGHIDXOWHUURUSURFHVVIRU%XVLQHVV(YHQW6\VWHPHUURUVLVLQWKH:)(5525
LWHPW\SHWKH'()$8/7B(9(17B(5525SURFHVV,I\RXZLVKWREXLOG
FXVWRPHUURUSURFHVVHVIRUDEXVLQHVVHYHQW\RXZLOOQHHGWRFUHDWH\RXURZQLWHP
W\SH
Oracle Workflow Release 2.6.2 Business Event System and PL/SQL Development Guidelines Page 22
USEFUL DEBUGGING TIPS
7KH:RUNIORZ%XVLQHVV(YHQW6\VWHPLQFOXGHVDGHEXJIODJZKLFK\RXFDQVZLWFK
RQWRRXWSXWXVHIXOORJPHVVDJHVWRDVVLVWGHEXJJLQJRI\RXUFRGH
<RXVKRXOGQHYHUVHWWKHGHEXJIODJLQ\RXURZQSURGXFWLRQFRGHRUVKLSFRGHLW
VKRXOGRQO\EHXVHGGXULQJWHVWLQJDQGVHWLQD64/VFULSW:RUNIORZVKLSVZLWK
DQDGPLQVFULSWZIDGPLQVTOZIDJWOVWVTOZKLFKLVXVHGWRUXQWKHDJHQWOLVWHQHUV
LQGHEXJPRGH
7RVHWGHEXJJLQJRQ\RXFDQH[HFXWHWKHIROORZLQJ64/
set serveroutput on size 100000
begin
dbms_output.put_line(’=============================================’);
wf_log_pkg.wf_debug_flag := TRUE;
end;
/
7RVHWWKHGHEXJJLQJRII
begin
wf_log_pkg.wf_debug_flag := FALSE;
end;
/
Oracle Workflow Release 2.6.2 Business Event System and PL/SQL Development Guidelines Page 23
EventKey: 1602
EventData:
Level:6 Module:dispatch Time:21-06-2001 16:03:36
>>> Message: ran wf_rule.workflow_protocol and returned SUCCESS
7KHVHGHEXJPHVVDJHVVKRZ
• 7KHHYHQWEHLQJGLVSDWFKHG
• ,IDQ\PDWFKLQJVXEVFULSWLRQVZHUHIRXQG
• :KDWUXOHIXQFWLRQZDVH[HFXWHGZKDWDFWLRQZDVWDNHQ
• 7KHRXWSXWRIWKHHYHQWPHVVDJHDIWHUWKHVXEVFULSWLRQZDVH[HFXWHG
• 7KHUHWXUQFRGHRIWKHUXOHIXQFWLRQ
CONCLUSION
)ROORZLQJWKHVHGHYHORSPHQWJXLGHOLQHVZLOOKHOS\RXEXLOGSRZHUIXODSSOLFDWLRQV
XVLQJWKH2UDFOH:RUNIORZ%XVLQHVV(YHQW6\VWHPDQG3/64/
Oracle Workflow Release 2.6.2 Business Event System and PL/SQL Development Guidelines Page 24
Oracle Workflow Release 2.6.2 Business Event System and PL/SQL Development Guidelines Page 25
Oracle Workflow Release 2.6.2 Business Event System and PL/SQL Development Guidelines
October 2001
Author: Mark Craig
Contributing Authors: Kevin Hudson, Clara Jaeckel, Janet Lee, Donna Ng, Debbie Quezadaz
Oracle Corporation
World Headquarters
500 Oracle Parkway
Redwood Shores, CA 94065
U.S.A.
Worldwide Inquiries:
Phone: +1.650.506.7000
Fax: +1.650.506.7200
www.oracle.com