ORACLE-Workflow_第1頁
ORACLE-Workflow_第2頁
ORACLE-Workflow_第3頁
ORACLE-Workflow_第4頁
ORACLE-Workflow_第5頁
已閱讀5頁,還剩201頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

1、Oracle WorkflowORACLEORACLE工作流工作流( (版本版本2.x)2.x)第一課第一課概述概述單元目標單元目標 了解工作流流程的概念了解工作流流程的概念 了解工作流的體系結(jié)構(gòu)了解工作流的體系結(jié)構(gòu) 了解工作流的特性了解工作流的特性工作流的范疇工作流的范疇 Workflow BuilderWorkflow Builder:定義業(yè)務流程的圖形化工:定義業(yè)務流程的圖形化工具具 Workflow EngineWorkflow Engine:執(zhí)行業(yè)務流程的定義:執(zhí)行業(yè)務流程的定義 Notification SystemNotification System:發(fā)送通知、處理回應:發(fā)送通

2、知、處理回應 Business Event SystemBusiness Event System:在系統(tǒng)間交互業(yè)務:在系統(tǒng)間交互業(yè)務事件事件實例實例1費用報表費用報表財務部:財務部:輸入費用報表輸入費用報表處理需要報銷的員工的電話查詢處理需要報銷的員工的電話查詢報銷人:報銷人:我的費用報銷是不是已經(jīng)被審批了?我的費用報銷是不是已經(jīng)被審批了?哪位上級主管在處理我的費用報銷?哪位上級主管在處理我的費用報銷?財務部是否已經(jīng)復核了我的費用報銷?財務部是否已經(jīng)復核了我的費用報銷?我大概什么時候可以拿到錢?我大概什么時候可以拿到錢?為什么我拿到的錢要比我報銷的少?為什么我拿到的錢要比我報銷的少?實例實例

3、1費用報表費用報表實例實例1費用報表費用報表實例實例2招聘招聘正在招聘員工的經(jīng)理:正在招聘員工的經(jīng)理: 招聘被審批后通知人事部門發(fā)出招聘被審批后通知人事部門發(fā)出OfferOffer實例實例2招聘招聘工作流的用途工作流的用途 信息系統(tǒng)的一個重要功能就是將不信息系統(tǒng)的一個重要功能就是將不同類型的信息依據(jù)一定的業(yè)務規(guī)則傳送同類型的信息依據(jù)一定的業(yè)務規(guī)則傳送給不同的人,并且業(yè)務規(guī)則在不斷的變給不同的人,并且業(yè)務規(guī)則在不斷的變化中。化中。工作流的用途工作流的用途一、信息傳遞:一、信息傳遞: 在在Oracle ApplicationOracle Application內(nèi)傳遞信息,內(nèi)傳遞信息,并提供并提供S

4、elf ServiceSelf Service或或FormForm形式的附件形式的附件工作流的用途工作流的用途二、定義業(yè)務規(guī)則:二、定義業(yè)務規(guī)則: 通過通過Workflow BuilderWorkflow Builder以圖形化的方以圖形化的方式定義業(yè)務流程式定義業(yè)務流程 通過通過PL/SqlPL/Sql編寫與業(yè)務規(guī)則相關的源編寫與業(yè)務規(guī)則相關的源代碼代碼工作流的用途工作流的用途三、發(fā)送通知:三、發(fā)送通知: 發(fā)送通知給發(fā)送通知給Oracle ApplicationOracle Application用戶用戶 發(fā)送通知給發(fā)送通知給E-mailE-mail或或InternetInternet用戶用

5、戶工作流的用途工作流的用途四、系統(tǒng)集成:四、系統(tǒng)集成: 定義業(yè)務事件,這些業(yè)務事件的發(fā)生定義業(yè)務事件,這些業(yè)務事件的發(fā)生可以啟動一個工作流流程或在系統(tǒng)之間可以啟動一個工作流流程或在系統(tǒng)之間傳播信息傳播信息通知列表通知列表工作流監(jiān)控工作流監(jiān)控Web頁面頁面Web分析分析 工具工具電子郵件電子郵件 客戶端客戶端 Oracle應用服務器應用服務器 或或 WebDB通知郵遞員通知郵遞員 程序程序用戶用戶角色角色傳送傳送回應回應轉(zhuǎn)交轉(zhuǎn)交取消取消查詢查詢執(zhí)行執(zhí)行定義定義管理管理監(jiān)控監(jiān)控查詢查詢內(nèi)嵌工作流的應用內(nèi)嵌工作流的應用Workflow BuilderWorkflow Loader工作流定義工作流定義

6、文件文件(*.wft)最終用戶最終用戶 客戶端客戶端應用服務器應用服務器Oracle服務器服務器開發(fā)者開發(fā)者客戶端客戶端工作流體系結(jié)構(gòu)工作流體系結(jié)構(gòu)工作流的一些特征和定義工作流的一些特征和定義 WorkflowBuilderWorkflowBuilder 工作流引擎工作流引擎 導入程序?qū)氤绦?通知系統(tǒng)通知系統(tǒng) 通知匯總(通知匯總(Notification WorklistNotification Worklist)的)的WebWeb頁面頁面 通知明細通知明細WebWeb頁面頁面 電子郵件方式的通知電子郵件方式的通知 目錄服務(目錄服務(Directory ServicesDirectory

7、Services) 工作流的監(jiān)控工作流的監(jiān)控 Oracle Workflow Builder 工作流的開發(fā)工具工作流的開發(fā)工具已圖形化的方式定義和修改工作流已圖形化的方式定義和修改工作流運行在運行在WindowsWindows平臺上平臺上 用戶可以將工作流的定義保存在數(shù)據(jù)庫中或存成一個用戶可以將工作流的定義保存在數(shù)據(jù)庫中或存成一個文件文件 Workflow BuilderWorkflow Builder有兩部分構(gòu)成有兩部分構(gòu)成對象瀏覽器對象瀏覽器流程圖表窗口流程圖表窗口工作流流程的定義工作流支持的流程結(jié)構(gòu) Looping Results_based branching Parallel flo

8、ws Rendezvous工作流支持的流程結(jié)構(gòu)(續(xù)) Voting Timeouts Escalation Automatic forwarding Subprocesses (unlimited hierarchy)工作流引擎 內(nèi)嵌在Oracle8i的服務器中 根據(jù)使用Workflow Builder所創(chuàng)建的工作流流程來協(xié)調(diào)流程中各個活動的執(zhí)行 監(jiān)控流程中各個活動的狀態(tài) 使用PL/SQL存儲過程或JAVA的API來記錄工作流狀態(tài)的任何變化工作流定義導入程序Workflow EngineWorkflow Builder ProcessDefinitionWorkflow LoaderWorkf

9、low Loader通知系統(tǒng)目錄服務目錄服務通知系統(tǒng)通知系統(tǒng)應用應用ApplicationApplication 界面界面通知郵遞員通知郵遞員 工作流工作流工作列表工作列表工作流引擎工作流引擎通知匯總的Web頁面通知明細的Web頁面電子郵件方式的通知目錄服務 WF_USERS保存如下一些信息:用戶名、用戶的顯示名、用戶接收通知的偏好和電子郵件的地址 WF_ROLES保存角色的信息 WF_USER_ROLES記錄了用戶和角色之間的關系工作流監(jiān)控程序工作流監(jiān)控程序(續(xù))練習 將工作流流程保存到數(shù)據(jù)庫中 使用啟動工作流流程的Web頁面來啟動工作流流程 修改工作流流程的定義第二課第二課計劃一個工作流流

10、程單元目標單元目標 了解構(gòu)成工作流流程的組件 計劃一個工作流流程流程的組成部分流程的組成部分Item Type Item Type 項目類型項目類型ProcessFunctionsNotificationsSubprocessesLookup TypesAttributesPL/SQLMessagesLookup TypesAttributesPL/SQLFunctionsNotificationsLookup TypesOracle Workflow BuilderOracle Workflow Builder (續(xù)續(xù)) 用于創(chuàng)建工作流的組件用于創(chuàng)建工作流的組件 在對象瀏覽器窗口中列出了流程

11、的所有組成部分在對象瀏覽器窗口中列出了流程的所有組成部分 組件的集合稱為項目類型組件的集合稱為項目類型 任何一個項目類型都包含了以下分支任何一個項目類型都包含了以下分支 屬性屬性attributes 流程流程(子流程子流程)processes(subprocesses) 通知通知notifications 功能功能functions 消息消息messages 值集值集lookup types計劃一個工作流流程計劃一個工作流流程確定你的業(yè)務需求確定你的業(yè)務需求確定通過哪些活動可以實現(xiàn)你的需求。例如:確定通過哪些活動可以實現(xiàn)你的需求。例如:a.活動的類型是什么:功能、通知還是子流程?活動的類型是什

12、么:功能、通知還是子流程?b.活動的結(jié)果將怎樣影響后續(xù)的活動?確定活活動的結(jié)果將怎樣影響后續(xù)的活動?確定活動有哪些可能的結(jié)果,將這些可能的結(jié)果值動有哪些可能的結(jié)果,將這些可能的結(jié)果值做成一個做成一個 值集值集計劃一個工作流流程計劃一個工作流流程 ( (續(xù)續(xù)) )確定在什么時候去啟動這個流程確定在什么時候去啟動這個流程a.a. 在什么條件下流程將被啟動?在在什么條件下流程將被啟動?在formform中的一中的一個按鈕被按下后、出現(xiàn)一個數(shù)據(jù)庫異常的時個按鈕被按下后、出現(xiàn)一個數(shù)據(jù)庫異常的時候,或者在其它一些條件下候,或者在其它一些條件下b.b. 是否需要一個界面來啟動流程是否需要一個界面來啟動流程確

13、定流程可能出現(xiàn)的結(jié)果,并為流程的結(jié)果確定流程可能出現(xiàn)的結(jié)果,并為流程的結(jié)果定義一個值集定義一個值集由下至上地創(chuàng)建一個工作流流程由下至上地創(chuàng)建一個工作流流程1.定義一個項目類型定義一個項目類型2.定義項目類型的屬性定義項目類型的屬性3.定義值集和該值集包含的值定義值集和該值集包含的值4.定義消息定義消息5.定義消息的屬性定義消息的屬性6.定義功能、通知和子流程,這些組件將作為定義功能、通知和子流程,這些組件將作為流程中的活動流程中的活動7.繪制活動之間的關系繪制活動之間的關系(流程圖流程圖)由上至下地創(chuàng)建一個工作流流程由上至下地創(chuàng)建一個工作流流程1.1. 使用向?qū)?chuàng)建流程的框架使用向?qū)?chuàng)建流程的

14、框架2.2. 定義活動,而不考慮底層的從屬關系定義活動,而不考慮底層的從屬關系3.3. 繪制活動之間的關系繪制活動之間的關系( (流程圖流程圖) )4.4. 為流程定義項目類型的屬性為流程定義項目類型的屬性5.5. 定義枚舉類型和它所包含的值定義枚舉類型和它所包含的值6.6. 定義消息定義消息7.7. 定義消息的屬性定義消息的屬性8.8. 使用底層的組件修改子流程、通知和功能使用底層的組件修改子流程、通知和功能第三課第三課繪制一個工作流流程繪制一個工作流流程單元目標單元目標 繪制一個工作流流程繪制一個工作流流程 將工作流提供的標準活動集成到流程中將工作流提供的標準活動集成到流程中 查看項目類型

15、中的流程定義查看項目類型中的流程定義創(chuàng)建一個新的工作流流程創(chuàng)建一個新的工作流流程1.定義一個項目類型定義一個項目類型2.定義項目類型的屬性定義項目類型的屬性3.定義枚舉類型和該類型包含的值定義枚舉類型和該類型包含的值4.定義消息定義消息5.定義消息的屬性定義消息的屬性6.定義功能、通知和自流程,這些組件將作為定義功能、通知和自流程,這些組件將作為流程中的活動流程中的活動7.繪制活動之間的關系繪制活動之間的關系(流程圖流程圖)導入角色導入角色繪制一個流程繪制一個流程任何一個流程都包含一個或多個開始活動和任何一個流程都包含一個或多個開始活動和一個或多個的結(jié)束活動一個或多個的結(jié)束活動1.1. 在開始

16、繪制流程前必須先打開在開始繪制流程前必須先打開Workflow Workflow BuilderBuilder中的流程窗口中的流程窗口a.a. 在對象瀏覽器窗口中雙擊流程活動的圖標在對象瀏覽器窗口中雙擊流程活動的圖標b.b. 選擇一個流程活動然后按選擇一個流程活動然后按Ctrl+ECtrl+Ec.c. 選擇一個流程活動然后選擇選擇一個流程活動然后選擇EditEdit菜單下菜單下的的Process DetailProcess Detail菜單項菜單項d.d. 使用向?qū)韯?chuàng)建一個流程活動使用向?qū)韯?chuàng)建一個流程活動向?qū)驅(qū)ЮL制一個流程繪制一個流程 (續(xù)續(xù))2.2. 在流程中加入一個新的節(jié)點在流程中加

17、入一個新的節(jié)點a.a. 在對象瀏覽器窗口中選擇一個活動在對象瀏覽器窗口中選擇一個活動( (功能、通功能、通知或子流程知或子流程) ),然后將它拖拽到流程窗口中,然后將它拖拽到流程窗口中b.b. 選擇流程窗口中的工具欄按鈕:選擇流程窗口中的工具欄按鈕:New New Function/Process/Notification(Function/Process/Notification(這些功能這些功能也可以通過在流程窗口的空白處右擊鼠標,也可以通過在流程窗口的空白處右擊鼠標,在彈出的菜單中選擇在彈出的菜單中選擇) )Show Label In Designer Show Label In Des

18、igner 菜單項菜單項顯示模式顯示模式 Display ModeDisplay ModePresentation ModeDeveloper Mode使用對象使用對象的內(nèi)部名的內(nèi)部名稱稱使用標準使用標準的圖標的圖標繪制一個流程繪制一個流程 (續(xù)續(xù))3.3. 在節(jié)點之間創(chuàng)建連接在節(jié)點之間創(chuàng)建連接( (箭頭箭頭) ):選中源節(jié)點按:選中源節(jié)點按下鼠標右鍵,然后拖動鼠標到目標節(jié)點,這下鼠標右鍵,然后拖動鼠標到目標節(jié)點,這樣就在兩個節(jié)點之間創(chuàng)建了一個連接樣就在兩個節(jié)點之間創(chuàng)建了一個連接4.4. 如果源節(jié)點對應的活動定義過結(jié)果集如果源節(jié)點對應的活動定義過結(jié)果集(Lookup (Lookup Type)

19、Type),那么在創(chuàng)建連接的時候?qū)⒁笥脩粼冢敲丛趧?chuàng)建連接的時候?qū)⒁笥脩粼诮Y(jié)果集中選擇一個結(jié)果值結(jié)果集中選擇一個結(jié)果值自循環(huán)的連接自循環(huán)的連接如果活動超時,它如果活動超時,它將循環(huán)回自己重新將循環(huán)回自己重新運行運行 連接連接如果活動的返回值不在它的結(jié)果集內(nèi),如果活動的返回值不在它的結(jié)果集內(nèi),那么可以使用那么可以使用連接來處理連接來處理相應的業(yè)務邏輯相應的業(yè)務邏輯 連接連接如果使用了如果使用了連接,那么無論連接,那么無論活動的返回值是什么活動的返回值是什么連接所連接所指向的活動都將被執(zhí)行指向的活動都將被執(zhí)行從上至下地創(chuàng)建工作流從上至下地創(chuàng)建工作流可以直接創(chuàng)建子流程、通知和功能,而無需可以直接

20、創(chuàng)建子流程、通知和功能,而無需先在對象瀏覽器窗口中創(chuàng)建它們,也無須事先在對象瀏覽器窗口中創(chuàng)建它們,也無須事先定義它們所對應的底層對象先定義它們所對應的底層對象可以先不輸入活動所可以先不輸入活動所對應的對應的PL/SQLPL/SQL存儲過存儲過程或外部程序的名字程或外部程序的名字從上至下地創(chuàng)建工作流從上至下地創(chuàng)建工作流可以直接創(chuàng)建子流程、通知和功能,而無需可以直接創(chuàng)建子流程、通知和功能,而無需先在對象瀏覽器窗口中創(chuàng)建它們,也無須事先在對象瀏覽器窗口中創(chuàng)建它們,也無須事先定義它們所對應的底層對象先定義它們所對應的底層對象可以先不輸入活動所可以先不輸入活動所對應的對應的PL/SQLPL/SQL存儲過

21、存儲過程或外部程序的名字程或外部程序的名字在繪制流在繪制流程的時候程的時候創(chuàng)建功能創(chuàng)建功能使用使用VerifyVerify菜單項校驗流程菜單項校驗流程 在流程中至少有一個開始活動和一個結(jié)束活動在流程中至少有一個開始活動和一個結(jié)束活動 流程沒有將自身作為子流程包含在流程中流程沒有將自身作為子流程包含在流程中 相同的子流程沒有在流程中被使用兩次相同的子流程沒有在流程中被使用兩次 對應活動的任何一個結(jié)果值,都有一個連接指對應活動的任何一個結(jié)果值,都有一個連接指向后續(xù)的活動向后續(xù)的活動 所有被標記為所有被標記為EndEnd的節(jié)點,沒有指向其它活動的節(jié)點,沒有指向其它活動的連接的連接使用使用Verify

22、Verify菜單項校驗流程菜單項校驗流程( (續(xù)續(xù)) ) 通知活動的結(jié)果集與分配給該通知的消息的結(jié)通知活動的結(jié)果集與分配給該通知的消息的結(jié)果集一致果集一致 在消息的消息體中所引用的消息屬性在消息的消息體中所引用的消息屬性(Message (Message Attributes)Attributes)必須在消息中被定義過必須在消息中被定義過 如果流程引用了其它項目類型中的對象,那么如果流程引用了其它項目類型中的對象,那么要校驗這些對象的屬性是否存在要校驗這些對象的屬性是否存在 對于通知活動必須分配相應的執(zhí)行人(即通知對于通知活動必須分配相應的執(zhí)行人(即通知的接收人)的接收人)修改流程中的節(jié)點修改

23、流程中的節(jié)點設置活動的屬性值設置活動的屬性值標準標準項目類型提供的活動項目類型提供的活動通過通過Application提供的提供的Self-Service功能功能查看工作流流程定義查看工作流流程定義第四課第四課定義項目類型、項目類型屬性和定義項目類型、項目類型屬性和枚舉類型枚舉類型單元目標單元目標 創(chuàng)建一個項目類型創(chuàng)建一個項目類型 Selector/CallbackSelector/Callback功能功能 創(chuàng)建項目類型屬性創(chuàng)建項目類型屬性 創(chuàng)建枚舉類型創(chuàng)建枚舉類型創(chuàng)建一個新的工作流流程創(chuàng)建一個新的工作流流程1.定義一個項目類型定義一個項目類型2.定義項目類型的屬性定義項目類型的屬性3.定義枚

24、舉類型和該類型包含的值定義枚舉類型和該類型包含的值4.定義消息定義消息5.定義消息的屬性定義消息的屬性6.定義功能、通知和自流程,這些組件將作為定義功能、通知和自流程,這些組件將作為流程中的活動流程中的活動7.繪制活動之間的關系繪制活動之間的關系(流程圖流程圖)向?qū)驅(qū)Фx一個項目類型定義一個項目類型在此處輸入在此處輸入Selector功功能所對應的能所對應的PL/SQL存存儲過程名儲過程名定義項目類型屬性定義項目類型屬性 哪些信息需要被定義為項目類型的屬性?哪些信息需要被定義為項目類型的屬性?那些要在通知中顯示的信息那些要在通知中顯示的信息那些在功能中需要使用的信息那些在功能中需要使用的信息

25、(eg.(eg.采購采購訂單審批工作流中的采購訂單編號訂單審批工作流中的采購訂單編號) )通知的接收人、發(fā)送人等的信息通知的接收人、發(fā)送人等的信息定義項目類型屬性定義項目類型屬性 (續(xù)續(xù))類型為類型為FormForm的屬性的屬性類型為類型為URLURL的屬性的屬性類型為類型為URLURL的屬性的屬性 ( (續(xù)續(xù)) )創(chuàng)建枚舉類型創(chuàng)建枚舉類型創(chuàng)建枚舉類型的值創(chuàng)建枚舉類型的值練習練習 使用使用Workflow BuilderWorkflow Builder向?qū)驅(qū)?繪制流程中的連接繪制流程中的連接 保存一個流程保存一個流程第五課第五課創(chuàng)建通知活動創(chuàng)建通知活動單元目標單元目標 定義消息定義消息 定義

26、消息的屬性定義消息的屬性 定義通知活動定義通知活動通知的定義通知的定義 通知用于向特定用戶發(fā)送消息,并提供通知用于向特定用戶發(fā)送消息,并提供了接收人完成某項工作或做出某項決定了接收人完成某項工作或做出某項決定所需的信息。通知分為需要接收人回應所需的信息。通知分為需要接收人回應的通知和不需要回應的通知。的通知和不需要回應的通知。創(chuàng)建一個新的工作流流程創(chuàng)建一個新的工作流流程1.定義一個項目類型定義一個項目類型2.定義項目類型的屬性定義項目類型的屬性3.定義枚舉類型和該類型包含的值定義枚舉類型和該類型包含的值4.定義消息定義消息5.定義消息的屬性定義消息的屬性6.定義功能、通知和子流程,這些組件將作

27、為定義功能、通知和子流程,這些組件將作為流程中的活動流程中的活動7.繪制活動之間的關系繪制活動之間的關系(流程圖流程圖)定義一個消息定義一個消息定義消息的屬性定義消息的屬性定義來源為回應的消息屬性定義來源為回應的消息屬性純文本的電子郵件通知的回應模板純文本的電子郵件通知的回應模板HTML的電子郵件通知的回應模板的電子郵件通知的回應模板HTML的電子郵件通知的回應模板的電子郵件通知的回應模板 (續(xù)續(xù))在通知的在通知的WEBWEB頁面中來源為回應的消息屬性頁面中來源為回應的消息屬性定義通知活動定義通知活動標準標準項目類型中的通知活項目類型中的通知活動動表決是表決是/ /否否定義通知活動的明細定義通

28、知活動的明細設置通知活動的一些信息設置通知活動的一些信息超時信息超時信息優(yōu)先級信優(yōu)先級信息息通知接收通知接收人信息人信息練習一練習一 設計一個僅發(fā)送通知的流程設計一個僅發(fā)送通知的流程 按從上至下的方式設計流程按從上至下的方式設計流程 修改一個現(xiàn)有的工作流定義修改一個現(xiàn)有的工作流定義 創(chuàng)建項目類型屬性和消息創(chuàng)建項目類型屬性和消息 設置節(jié)點的信息設置節(jié)點的信息( (消息、通知接收人、消息、通知接收人、Start/End)Start/End)練習二練習二 創(chuàng)建創(chuàng)建HTMLHTML的消息體的消息體 修改消息修改消息 修改通知修改通知 修改流程修改流程第六課第六課工作流目錄服務工作流目錄服務單元目標單元

29、目標 解釋工作流如何接收角色信息解釋工作流如何接收角色信息 建立工作流和目錄庫的關系建立工作流和目錄庫的關系術(shù)語術(shù)語 角色角色(Role):(Role):擁有共同特征的一個或多個擁有共同特征的一個或多個用戶的集合用戶的集合 目錄庫目錄庫(Directory Repository):(Directory Repository):用于記用于記錄和維護用戶信息的數(shù)據(jù)庫表錄和維護用戶信息的數(shù)據(jù)庫表用于目錄服務的視圖用于目錄服務的視圖 WF_USERS WF_ROLES WF_USER_ROLES用于目錄服務的工作流本地表用于目錄服務的工作流本地表 WF_LOCAL_USERS WF_LOCAL_ROL

30、ES WF_LOCAL_USER_ROLES設置全局用戶偏好和用戶個人偏好設置全局用戶偏好和用戶個人偏好第七課第七課定義功能和流程活動定義功能和流程活動單元目標單元目標 定義一個功能活動定義一個功能活動 定義活動的屬性定義活動的屬性 在功能活動中使用工作流引擎的在功能活動中使用工作流引擎的APIAPI 定義一個流程活動定義一個流程活動創(chuàng)建一個新的工作流流程創(chuàng)建一個新的工作流流程1.定義一個項目類型定義一個項目類型2.定義項目類型的屬性定義項目類型的屬性3.定義枚舉類型和該類型包含的值定義枚舉類型和該類型包含的值4.定義消息定義消息5.定義消息的屬性定義消息的屬性6.定義功能、通知和子流程,這些

31、組件將作為定義功能、通知和子流程,這些組件將作為流程中的活動流程中的活動7.繪制活動之間的關系繪制活動之間的關系(流程圖流程圖)定義一個功能活動定義一個功能活動為功能活動分配一個成本為功能活動分配一個成本 每個功能活動都需要分配一個成本值每個功能活動都需要分配一個成本值 成本值是指工作流引擎執(zhí)行該功能活動所需花成本值是指工作流引擎執(zhí)行該功能活動所需花費的時間(單位:秒)費的時間(單位:秒) 通常我們會為那些執(zhí)行邏輯復雜的功能活動分通常我們會為那些執(zhí)行邏輯復雜的功能活動分配較高的成本值配較高的成本值 工作流引擎缺省情況下只處理那些成本值小于工作流引擎缺省情況下只處理那些成本值小于或等于或等于50

32、50(單位:百分之一秒)的功能活動(單位:百分之一秒)的功能活動PL/SQL APIPL/SQL API的規(guī)范的規(guī)范the internal name for the item type.Defined in the Oracle Workflow Builder.a string that represents a primary key generated by the workflow-enabled application for the item type. The string uniquely identifies the item within an item type.the

33、 ID number of the activity that this procedure is called from.determines the execution mode of the function procedure.a result may be returned depending on the funcmode used to call the function.功能活動的執(zhí)行模式功能活動的執(zhí)行模式功能活動的執(zhí)行模式(續(xù))功能活動的執(zhí)行模式(續(xù)) RUNRUN CANCELCANCEL SKIP:SKIP:通過通過resultout:=wf_engine.eng_no_

34、skipresultout:=wf_engine.eng_no_skip來阻止跳過操來阻止跳過操作作 RETRYRETRYPL/SQL APIPL/SQL API的返回值的返回值PL/SQL APIPL/SQL API的返回值的返回值WAITINGDEFERRED: to_char(date string, wf_engine.date_format)NOTIFIED:ERROR:通知活動使用的通知活動使用的PL/SQL PL/SQL 存儲過程存儲過程RESPONDFORWARDTRANSFERRUN:在在RESPOND之后執(zhí)行之后執(zhí)行VALIDATE:在在RESPOND之前執(zhí)行之前執(zhí)行TIM

35、EOUTQUESTION/ANSWER在在RESPOND/FORWARD/TRANSFER/VALIDATE/QUESTION/ANSWER模式下,參數(shù)模式下,參數(shù)RESULTOUT將被忽略,返回值為將被忽略,返回值為ERROR:例外;例外;通過調(diào)用通過調(diào)用WF_ENGINE.context_nid獲得獲得notification ID;在在TEANSFER和和FORWARD模式下,通過調(diào)用模式下,通過調(diào)用WF_ENGINE.context_text獲得獲得轉(zhuǎn)交至轉(zhuǎn)交至或或授權(quán)至授權(quán)至的角色;的角色;在在RESPOND模式下,通過調(diào)用模式下,通過調(diào)用WF_ENGINE.context_text

36、獲得獲得通知接收人通知接收人的角色;的角色;如果通知是由如果通知是由worklist回應的,那么回應的,那么WF_ENGINE.context_text返回的將是通知接收人的角返回的將是通知接收人的角色,如果通知是由電子郵件回應的,那么色,如果通知是由電子郵件回應的,那么WF_ENGINE.context_text返回的將是返回的將是“email:responder_email_address”異常處理異常處理通過數(shù)據(jù)庫包通過數(shù)據(jù)庫包WF_CORE提供的提供的APIs,在與工作流功能相關的存儲,在與工作流功能相關的存儲過程中觸發(fā)和捕獲異常過程中觸發(fā)和捕獲異常工作流引擎會將那些產(chǎn)生異常的工作流活

37、動的狀態(tài)設置為工作流引擎會將那些產(chǎn)生異常的工作流活動的狀態(tài)設置為ERROR存儲過程產(chǎn)生異常存儲過程產(chǎn)生異常存儲過程的返回值為存儲過程的返回值為ERROR:表表WF_ITEM_ACTIVITY_STATUSES中的列:中的列:ERROR_NAME、ERROR_MESSAGE和和ERROR_STACK反映了具體的錯誤信息反映了具體的錯誤信息異常處理異常處理LoopingIgnoreResetLoop錯誤處理流程錯誤處理流程ITEM TYPE: System:Error定義功能活動屬性定義功能活動屬性定義流程活動定義流程活動定義活動明細定義活動明細循環(huán)循環(huán)在在或或的操作中,當一個的操作中,當一個條件

38、成立后,另一個條件對條件成立后,另一個條件對應的分支將被忽略應的分支將被忽略通過在通過在Cancel模式下調(diào)模式下調(diào)用活動,來重設活動的狀用活動,來重設活動的狀態(tài)態(tài)不重設活動狀態(tài),而直接不重設活動狀態(tài),而直接重新運行重新運行缺省的錯誤處理流程缺省的錯誤處理流程練習練習一一 創(chuàng)建功能活動創(chuàng)建功能活動練習二練習二 為功能活動創(chuàng)建一段為功能活動創(chuàng)建一段PL/SQL存儲過程存儲過程 修改功能活動修改功能活動練習三練習三 為通知活動創(chuàng)建一段為通知活動創(chuàng)建一段PL/SQL存儲過程存儲過程第八課第八課工作流引擎工作流引擎單元目標單元目標 了解工作流引擎是如何管理流程的了解工作流引擎是如何管理流程的 在功能活

39、動中調(diào)用工作流引擎在功能活動中調(diào)用工作流引擎APIAPI工作流引擎工作流引擎在服務器端運行的在服務器端運行的PL/SQL程序程序工作流引擎的運行,即對工作流引擎的存儲過程和功能的調(diào)用工作流引擎的運行,即對工作流引擎的存儲過程和功能的調(diào)用對流程實例中的活動的狀態(tài)進行管理對流程實例中的活動的狀態(tài)進行管理當源活動運行結(jié)束后,決定運行哪個后續(xù)活動當源活動運行結(jié)束后,決定運行哪個后續(xù)活動自動地執(zhí)行功能活動自動地執(zhí)行功能活動調(diào)用通知系統(tǒng)發(fā)送通知調(diào)用通知系統(tǒng)發(fā)送通知支持各種流程結(jié)構(gòu)(包括:循環(huán)、平行、子流程等結(jié)構(gòu))支持各種流程結(jié)構(gòu)(包括:循環(huán)、平行、子流程等結(jié)構(gòu))可以在可以在non-savepoint的環(huán)境

40、下運行,包括在的環(huán)境下運行,包括在Trigger和分布式事務和分布式事務中調(diào)用中調(diào)用缺省情況下工作流的運行時實時的,但對于對系統(tǒng)資源要求比較缺省情況下工作流的運行時實時的,但對于對系統(tǒng)資源要求比較高的流程,可交由后臺引擎執(zhí)行高的流程,可交由后臺引擎執(zhí)行維護已完成活動的歷史紀錄維護已完成活動的歷史紀錄偵測錯誤的條件和運行出錯的流程偵測錯誤的條件和運行出錯的流程啟動工作流流程啟動工作流流程 WF_ENGINE.CreateProcess WF_ENGINE.StartProcess WF_ENGINE.LaunchProcess工作流引擎對工作流的處理工作流引擎對工作流的處理 執(zhí)行執(zhí)行開始開始活動

41、活動 在源活動執(zhí)行結(jié)束后,根據(jù)結(jié)果值所對應的連在源活動執(zhí)行結(jié)束后,根據(jù)結(jié)果值所對應的連接決定執(zhí)行哪個后續(xù)活動接決定執(zhí)行哪個后續(xù)活動 自動地按順序執(zhí)行流程中的功能活動,直到遇自動地按順序執(zhí)行流程中的功能活動,直到遇到一個通知活動或到一個通知活動或塊塊活動活動 調(diào)用通知系統(tǒng)發(fā)送通知調(diào)用通知系統(tǒng)發(fā)送通知 在通知被回應或在通知被回應或塊塊活動執(zhí)行完畢后,繼續(xù)活動執(zhí)行完畢后,繼續(xù)執(zhí)行流程中的活動,直到遇到執(zhí)行流程中的活動,直到遇到結(jié)束結(jié)束活動活動活動的狀態(tài)活動的狀態(tài) 活動活動(Active)(Active) 完成完成(Complete)(Complete) 等待等待(Waiting)(Waiting)

42、通知通知(Notified)(Notified) 推遲推遲(Deferred)(Deferred) 錯誤錯誤(Error)(Error) 掛起掛起(Suspend)(Suspend)調(diào)用工作流引擎調(diào)用工作流引擎 當一個活動結(jié)束后必須通知工作流引擎當一個活動結(jié)束后必須通知工作流引擎 通知、功能、流程活動結(jié)束,會自動調(diào)用通知、功能、流程活動結(jié)束,會自動調(diào)用WF_ENGINE.CompleteActivity() 如果通知活動要求用戶在如果通知活動要求用戶在Form或或Web頁面中頁面中進行某些操作,那么當用戶完成這些操作後,進行某些操作,那么當用戶完成這些操作後,需要在需要在Form或或Web頁面

43、中調(diào)用頁面中調(diào)用WF_ENGINE.CompleteActivity() 如果功能活動調(diào)用的是外部程序(而不是如果功能活動調(diào)用的是外部程序(而不是PL/SQL的存儲過程),那么需要在外部程序的存儲過程),那么需要在外部程序中加入中加入WF_ENGINE.CompleteActivity()工作流工作流APIENGINE APIsENGINE APIs 啟動啟動/ /運行一個流程運行一個流程 交換屬性信息交換屬性信息 交換狀態(tài)信息交換狀態(tài)信息CORE APIs:CORE APIs:觸發(fā)和捕捉錯誤觸發(fā)和捕捉錯誤PURGE APIs:PURGE APIs:刪除已經(jīng)無用的運行時用的數(shù)據(jù)刪除已經(jīng)無用的運

44、行時用的數(shù)據(jù)DIRECTORY APIs:DIRECTORY APIs:與工作流的目錄服務交換用戶和角色的信息與工作流的目錄服務交換用戶和角色的信息MONITOR APIs:MONITOR APIs:生成工作流監(jiān)控生成工作流監(jiān)控WebWeb頁面的頁面的URLURLNOTIFICATION APIs:NOTIFICATION APIs:管理通知活動管理通知活動PREFERENCE APIs:PREFERENCE APIs:接收用戶的偏好信息接收用戶的偏好信息QUEUE APIs:QUEUE APIs:負責工作流的高級隊列處理負責工作流的高級隊列處理DOCUMENT MANAGEMENT APIs

45、:DOCUMENT MANAGEMENT APIs:返回返回URLURL或或JavaScriptJavaScriptVIEWS:VIEWS:提供了一些公用的視圖來查詢工作流相關的數(shù)據(jù)提供了一些公用的視圖來查詢工作流相關的數(shù)據(jù)工作流引擎工作流引擎API 下列下列API用于啟動或運行一個工作流流程用于啟動或運行一個工作流流程 WF_ENGINE.CreateProcess WF_ENGINE.StartProcess WF_ENGINE.LaunchProcess WF_ENGINE.SetitemOwner WF_ENGINE.SetitemUserKey WF_ENGINE.SetitemPa

46、rent WF_ENGINE.background工作流引擎工作流引擎API (續(xù)續(xù)) 下列下列API用于和工作流引擎交互項目類型或活動的屬用于和工作流引擎交互項目類型或活動的屬性值性值 WF_ENGINE.SetitemAttribute(3) WF_ENGINE.SetitemAttrDocument WF_ENGINE.GetitemAttribute(3) WF_ENGINE.GetitemAttrDocument WF_ENGINE.GetitemAttrInfo WF_ENGINE.GetActivityAttribute(3) WF_ENGINE.AdditemAttr WF_E

47、NGINE.GetActivityAttrInfo工作流引擎工作流引擎API (續(xù)續(xù)) 下列下列API用于和工作流引擎交互活動的狀態(tài)用于和工作流引擎交互活動的狀態(tài) WF_ENGINE.CompleteActivity WF_ENGINE.BeginActivity WF_ENGINE.AssignActivity WF_ENGINE.GetActivityLabel WF_ENGINE.AbortProcess WF_ENGINE.SuspendProcess WF_ENGINE.ResumeProcess WF_ENGINE.HandleError WF_ENGINE.ItemStatus后

48、臺引擎后臺引擎工作流的后臺引擎是一個工作流的后臺引擎是一個PL/SQL的存儲過程的存儲過程 后臺引擎用于偵測和執(zhí)行那些被延遲或超時的活動后臺引擎用于偵測和執(zhí)行那些被延遲或超時的活動 如果一個活動在后臺引擎啟動后延遲或超時,那么引如果一個活動在后臺引擎啟動后延遲或超時,那么引擎將偵測到它并執(zhí)行它擎將偵測到它并執(zhí)行它 一旦所有符合條件的活動(延遲或超時)被執(zhí)行完畢一旦所有符合條件的活動(延遲或超時)被執(zhí)行完畢后,引擎將停止工作后,引擎將停止工作后臺引擎后臺引擎WF_CORE 用于在用于在FUNCTION ACTIVITIES中觸發(fā)中觸發(fā)和捕獲錯誤和捕獲錯誤 當當FUNCTION ACTIVITIE

49、S中產(chǎn)生了未中產(chǎn)生了未捕獲的異常或捕獲的異常或FUNCTION ACITVITIES的返回值為的返回值為ERROR時,工作流引擎時,工作流引擎會將該會將該FUNCTION ACTIVITY的狀態(tài)設的狀態(tài)設為為ERRORWF_CORE在表在表WF_ITEM_ACTIVITY_STATUS中提供了三個字段:中提供了三個字段:ERROR_NAME、ERROR_MESSAGE和和ERROR_STACK用于用于存放存放ACTIVITY的錯誤信息的錯誤信息WF_CORE.RAISE()會往會往ERROR_NAME和和ERROR_MESSAGE中寫入信息,如果中寫入信息,如果WF_CORE.RAISE()未

50、被調(diào)用,那么引起異常未被調(diào)用,那么引起異常數(shù)據(jù)庫錯誤信息會被寫入到這兩個字段中數(shù)據(jù)庫錯誤信息會被寫入到這兩個字段中通過調(diào)用通過調(diào)用WF_CORE.CONTEXT()往往ERROR_STACK中寫入信息中寫入信息在在ITEM TYPE:System:Error中提供了名為中提供了名為ERROR_NAME、ERROR_MESSAGE、ERROR_STACK的的ITEM ATTRIBUTEWF_CORE CLEAR:清空存放錯誤消息的緩存:清空存放錯誤消息的緩存 GET_ERROR(err_name out varchar2, err_message out varchar2, err_stack

51、out varchar2):獲取錯誤信息:獲取錯誤信息 TOKEN(token_name in varchar2, token_value in varchar2) RAISE(name in varchar2) CONTEXT(pkg_name in varchar2, proc_name in varchar2, arg1 in varchar2 default *none*, , arg5 in varchar2 default *none*):往:往ERROR_STACK中寫中寫入信息入信息Purge APIs WF_PURGE 清除那些已經(jīng)過時的工作流運行時的數(shù)據(jù),這些數(shù)據(jù)清除那些已

52、經(jīng)過時的工作流運行時的數(shù)據(jù),這些數(shù)據(jù)所屬的工作流實例的狀態(tài)為已完成所屬的工作流實例的狀態(tài)為已完成 清除那些舊版本的工作流活動的定義,這些舊版本的清除那些舊版本的工作流活動的定義,這些舊版本的工作流活動已經(jīng)不會再被使用工作流活動已經(jīng)不會再被使用Purge APIs ITEM_ACTIVITY_STATUSES(itemtype in varchar2 default null, itemkey in varchar2 default null, enddate in date default sysdate):刪除表:刪除表wf_item_activity_statuses和和wf_item_a

53、ctivity_statuses_h中的記錄中的記錄 ITEMS(itemtype in varchar2 default null, itemkey in varchar2 default null, enddate in date default sysdate):除了提供和除了提供和item_activity_statuses一樣的功能之外,還一樣的功能之外,還會刪除會刪除wf_item_attribute_values和和wf_items中的記錄中的記錄Purge APIs ACTIVITIES(itemtype in varchar2 default null, enddate in

54、 date default sysdate):刪除那些舊版本的工:刪除那些舊版本的工作流活動的定義,在調(diào)用作流活動的定義,在調(diào)用activities之前建議先調(diào)用之前建議先調(diào)用items以防止已過時的運行時數(shù)據(jù)參考了舊版本的活動以防止已過時的運行時數(shù)據(jù)參考了舊版本的活動定義定義 NOTIFICATIONS(itemtype in varchar2 default null, enddate in date default sysdate):刪除舊的通知信息,:刪除舊的通知信息,在調(diào)用之前建議先調(diào)用在調(diào)用之前建議先調(diào)用items ITEM_NOTIFICATIONS(itemtype in va

55、rchar2 default null, itemkey in varchar2 default null, enddate in date default sysdate)Purge APIs TOTAL(itemtype in varchar2 default null, itemkey in varchar2 default null, enddate in date default sysdate)出錯處理出錯處理 回滾到前一個活動回滾到前一個活動 將活動的狀態(tài)標記為將活動的狀態(tài)標記為ERROR 嘗試去運行出錯處理流程嘗試去運行出錯處理流程練習一練習一 設置通知的超時信息設置通知的超時

56、信息 為流程分配結(jié)果集為流程分配結(jié)果集 為流程添加錯誤處理流程為流程添加錯誤處理流程 通過后臺引擎處理流程通過后臺引擎處理流程練習二練習二 創(chuàng)建一個有結(jié)果集的功能活動創(chuàng)建一個有結(jié)果集的功能活動 為功能的不同結(jié)果繪制分支為功能的不同結(jié)果繪制分支第九課第九課工作流中的通知功能工作流中的通知功能單元目標單元目標 通過通知的通過通知的Web頁面回應通知頁面回應通知 通過電子郵件的方式回應通知通過電子郵件的方式回應通知 使用工作流主頁使用工作流主頁 定義通知的業(yè)務規(guī)則定義通知的業(yè)務規(guī)則工作流主頁工作流主頁查找通知的查找通知的WebWeb頁面頁面通知列表通知列表通知明細通知明細使用該按使用該按鈕對通知鈕對

57、通知進行轉(zhuǎn)交進行轉(zhuǎn)交在通知的在通知的WebWeb頁面中調(diào)用頁面中調(diào)用FormForm電子郵件方式的通知電子郵件方式的通知電子郵件方式的匯總通知電子郵件方式的匯總通知這種方式的通知僅提供這種方式的通知僅提供查詢,無法在這里對通查詢,無法在這里對通知進行回應知進行回應定義規(guī)則對通知進行自動回應定義規(guī)則對通知進行自動回應查詢屬于某個用查詢屬于某個用戶的回應規(guī)則戶的回應規(guī)則創(chuàng)建新規(guī)則創(chuàng)建新規(guī)則先選擇一個項目先選擇一個項目類型類型選擇項目選擇項目類型中的類型中的某個通知某個通知定義規(guī)則內(nèi)容定義規(guī)則內(nèi)容第十課第十課工作流監(jiān)控工作流監(jiān)控單元目標單元目標 使用工作流監(jiān)控程序?qū)ぷ髁髁鞒踢M行使用工作流監(jiān)控程序?qū)?/p>

58、工作流流程進行監(jiān)控監(jiān)控工作流監(jiān)控頁面工作流監(jiān)控頁面流程名稱流程名稱流程圖表流程圖表窗口窗口明細信息明細信息的標簽頁的標簽頁窗口窗口管理用按鈕管理用按鈕在應用中調(diào)用工作流監(jiān)控頁面在應用中調(diào)用工作流監(jiān)控頁面在在Oracle的的Application中可以調(diào)用中可以調(diào)用Web瀏覽器,可以將監(jiān)控頁面瀏覽器,可以將監(jiān)控頁面的的URL作為參數(shù)傳送作為參數(shù)傳送在在Application的的Form中使用中使用FND_UTILITIES.OPEN_URL( )來來調(diào)用調(diào)用Web瀏覽器,并將監(jiān)控頁面的瀏覽器,并將監(jiān)控頁面的URL作為參數(shù)傳給它作為參數(shù)傳給它監(jiān)控某個特定的項目類型、特定的項目實例:監(jiān)控某個特定的項

59、目類型、特定的項目實例:流程圖表流程圖表URL通知列表通知列表URL活動列表活動列表URL調(diào)用數(shù)據(jù)庫功能來生成監(jiān)控頁面調(diào)用數(shù)據(jù)庫功能來生成監(jiān)控頁面URL的字符串的字符串流程圖表:流程圖表:WF_MONITOR.GetDiagramURL( )通知列表:通知列表: WF_MONITOR.GetEnvelopeURL( )活動列表:活動列表: WF_MONITOR.GetAdvancedEnvelopeURL( )調(diào)用時需要提供調(diào)用時需要提供Web代理、代理、Item Type、Item Key以及是在以及是在ADMIN/USER模式下監(jiān)控等參數(shù)模式下監(jiān)控等參數(shù)查找流程時的權(quán)限要求查找流程時的權(quán)限

60、要求在查找流程時將判斷當前用戶是否擁有工在查找流程時將判斷當前用戶是否擁有工作流管理員的權(quán)限作流管理員的權(quán)限 是管理員:用戶可以查看和監(jiān)控所有的是管理員:用戶可以查看和監(jiān)控所有的工作流流程實例工作流流程實例 不是管理員:用戶只能查看和監(jiān)控屬于不是管理員:用戶只能查看和監(jiān)控屬于自己的流程實例自己的流程實例查找流程的查找流程的WebWeb頁面頁面流程列表流程列表通知列表通知列表在活動列表中按條件過濾活動在活動列表中按條件過濾活動父子關系的流程實例父子關系的流程實例練習練習 在工作流流程中測試在工作流流程中測試PL/SQLPL/SQL功能功能 對通知進行回應對通知進行回應 監(jiān)控工作流流程監(jiān)控工作流流

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論