免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
JR - 精品文章 - OSWorkFlow分析
OSWorkFlow分析
1.    OSWorkFlow基本概念
    在商用和開源世界里,OSWorkflow 都不同于這些已有的工作流系統(tǒng)。最大不同在于 OSWorkflow 有著非常優(yōu)秀的靈活性。在開始接觸 OSWorkflow 時(shí)可能較難掌握(有人說不適合工作流新手入門),比如,OSWorkflow 不要求圖形化工具來開發(fā)工作流,而推薦手工編寫 xml 格式的工作流程描述符。它能為應(yīng)用程序開發(fā)者提供集成,也能與現(xiàn)有的代碼和數(shù)據(jù)庫進(jìn)行集成。這一切似乎給正在尋找快速“即插即用”工作流解決方案的人制造了麻煩,但研究發(fā)現(xiàn),那些“即插即用”方案也不能在一個(gè)成熟的應(yīng)用程序中提供足夠的靈活性來實(shí)現(xiàn)所有需求。
2.    OSWorkFlow主要優(yōu)勢
OSWorkflow 給你絕對(duì)的靈活性。OSWorkflow 被認(rèn)為是一種“低級(jí)別”工作流實(shí)現(xiàn)。與其他工作流系統(tǒng)能用圖標(biāo)表現(xiàn)“Loops(回路)”和“Conditions(條件)”相比,OSWorkflow 只是手工“編碼(Coded)”來實(shí)現(xiàn)的。但這并不能說實(shí)際的代碼是需要完全手工編碼的,腳本語言能勝任這種情形。OSWorkflow 不希望一個(gè)非技術(shù)用戶修改工作流程,雖然一些其他工作流系統(tǒng)提供了簡單的 GUI 用于工作流編輯,但像這樣改變工作流,通常會(huì)破壞這些應(yīng)用。所以,進(jìn)行工作流調(diào)整的最佳人選是開發(fā)人員,他們知道該怎么改變。不過,在最新的版本中,OSWorkflow 也提供了 GUI 設(shè)計(jì)器來協(xié)助工作流的編輯。

OSWorkflow 基于有限狀態(tài)機(jī)概念。每個(gè) state 由 step ID 和 status 聯(lián)合表現(xiàn)(可簡單理解為 step 及其 status 表示有限狀態(tài)機(jī)的 state)。一個(gè) state 到另一 state 的 transition 依賴于 action 的發(fā)生,在工作流生命期內(nèi)有至少一個(gè)或多個(gè)活動(dòng)的 state。這些簡單概念展現(xiàn)了 OSWorkflow 引擎的核心思想,并允許一個(gè)簡單 XML 文件解釋工作流業(yè)務(wù)流程。
3.    OSWorkFlow核心概念
3.1.    概念定義
 
步驟(Step)
    一個(gè) Step 描述的是工作流所處的位置??赡軓囊粋€(gè) Step Transtion(流轉(zhuǎn))到另外一個(gè) Step,或者也可以在同一個(gè) Step 內(nèi)流轉(zhuǎn)(因?yàn)?nbsp;Step 可以通 Status 來細(xì)分,形成多個(gè)State)。一個(gè)流程里面可以多個(gè)Step。

狀態(tài)(Status)
    工作流 Status 是用來描述工作流程中具體Step(步驟)狀態(tài)的字符串。OSWorkflow 的有 Underway(進(jìn)行中)、Queued(等候處理中)、Finished(完成)三種 Status。一個(gè)實(shí)際State(狀態(tài))真正是由兩部分組成:State = (Step + Status) 。

流轉(zhuǎn)(Transtion)
    一個(gè)State到另一個(gè)State的轉(zhuǎn)移。

動(dòng)作(Action)
    Action 觸發(fā)了發(fā)生在 Step 內(nèi)或 Step 間的流轉(zhuǎn),或者說是基于 State 的流轉(zhuǎn)。一個(gè) step 里面可以有多個(gè)Action。Action 和Step 之間的關(guān)系是,Step 說明“在哪里”,Action 說明“去哪里”。 一個(gè) Action 典型地由兩部分組成:可以執(zhí)行此Action(動(dòng)作)的
Condition(條件),以及執(zhí)行此動(dòng)作后的 Result(結(jié)果)。    

條件(Condition)
類似于邏輯判斷,可包含“AND”和“OR”邏輯。比如一個(gè)請假流程中的“本部門審批階段”,該階段利用“AND”邏輯,判斷流程狀態(tài)是否為等候處理中,以及審批者是否為本部門主管。

結(jié)果(Result)
Result 代表執(zhí)行Action(動(dòng)作)后的結(jié)果,指向新的 Step 及其 Step Status,也可能進(jìn)入 Split 或者 Join。Result 分為兩種, Contidional-Result (有條件結(jié)果),只有條件為真時(shí)才使用該結(jié)果,和 Unconditional-Result(無條件結(jié)果),當(dāng)條件不滿足或沒有條件時(shí)使用該結(jié)果。

分離/連接(Split/Join)
流程的切分和融合。很簡單的概念,Split 可以提供多個(gè) Result(結(jié)果);Join 則判斷多個(gè) Current Step 的態(tài)提供一個(gè) Result(結(jié)果)。
3.2.    步驟、狀態(tài)和動(dòng)作(Step, Status, and Action)
工作流要描述步驟(Step)、步驟的狀態(tài)(Status)、各個(gè)步驟之間的關(guān)系以及執(zhí)行各個(gè)步驟的條件和權(quán)限,每個(gè)步驟中可以含有一個(gè)或多個(gè)動(dòng)作(Action),動(dòng)作將會(huì)使一個(gè)步驟的狀態(tài)發(fā)生改變。

對(duì)于一個(gè)執(zhí)行的工作流來講,步驟的切換是不可避免的。一個(gè)工作流在某一時(shí)刻會(huì)有一個(gè)或多個(gè)當(dāng)前步驟,每個(gè)當(dāng)前步驟都有一個(gè)狀態(tài)值,當(dāng)前步驟的狀態(tài)值組成了工作流實(shí)例的狀態(tài)值。一旦完成了一個(gè)步驟,那么這個(gè)步驟將不再是當(dāng)前步驟(而是切換到一個(gè)新的步驟),通常一個(gè)新的當(dāng)前步驟將隨之建立起來,以保證工作流繼續(xù)執(zhí)行。完成了的步驟的最終狀態(tài)值是用Old-Status屬性指定的,這個(gè)狀態(tài)值的設(shè)定將發(fā)生在切換到其他步驟之前。Old-Status的值可以是任意的,但在一般情況下,我們設(shè)置為Finished。

切換本身是一個(gè)動(dòng)作(Action)的執(zhí)行結(jié)果。每個(gè)步驟可以含有多個(gè)動(dòng)作,究竟要載入哪個(gè)動(dòng)作是由最終用戶、外部事件或者Tiggerd的自動(dòng)調(diào)用決定的。隨著動(dòng)作的完成,一個(gè)特定的步驟切換也將發(fā)生。動(dòng)作可以被限制在用戶、用戶組或當(dāng)前狀態(tài)。每一個(gè)動(dòng)作都必須包含一個(gè)Unconditional Result和0個(gè)或多個(gè)Conditional Results。

所以,總體來說,一個(gè)工作流由多個(gè)步驟組成。每個(gè)步驟有一個(gè)當(dāng)前狀態(tài)(例如:Queued, Underway or Finished),一個(gè)步驟包含多個(gè)動(dòng)作。每個(gè)步驟含有多個(gè)可以執(zhí)行的動(dòng)作。每個(gè)動(dòng)作都有執(zhí)行的條件,也有要執(zhí)行的函數(shù)。動(dòng)作包含有可以改變狀態(tài)和當(dāng)前工作流步驟的results。
3.3.    結(jié)果、分支和連接(Results, Joins, and Splits)
3.3.1.    無條件結(jié)果(Unconditional Result)
對(duì)于每一個(gè)動(dòng)作來講,必須存在一個(gè)Unconditional Result。一個(gè)result是一系列指令,這些指令將告訴OSWorkFlow下一個(gè)任務(wù)要做什么。這包括使工作流從一個(gè)狀態(tài)切換到另一個(gè)狀態(tài)。
3.3.2.    有條件結(jié)果(Conditional Result)
Conditional Result是Unconditional Result的一個(gè)擴(kuò)展。它需要一個(gè)或多個(gè)Condition子標(biāo)簽。第一個(gè)為true的Conditional(使用AND或OR類型),會(huì)指明發(fā)生切換的步驟,這個(gè)切換步驟的發(fā)生是由于某個(gè)用戶執(zhí)行了某個(gè)動(dòng)作的結(jié)果導(dǎo)致的。
3.3.3.    三種不同的Results(conditional or unconditional)
一個(gè)新的、單一的步驟和狀態(tài)的組合。
一個(gè)分裂成兩個(gè)或多個(gè)步驟和狀態(tài)的組合。
將這個(gè)和其他的切換組合成一個(gè)新的單一的步驟和狀態(tài)的組合。
每種不同的result對(duì)應(yīng)了不同的xml描述,你可以閱讀        + wfIdList.get(i)).get(0);
4.10.    com.opensymphony.workflow.util
該包是 OSWorkflow 的工具包,包括了對(duì) BeanShell、BSF、EJB Local、EJB Remote、JNDI 的支持。
5.    OSWorkFlow表結(jié)構(gòu)分析
5.1.    OS_WFENTRY
工作流主表,存放工作流名稱和狀態(tài)

字段名    數(shù)據(jù)類型    說明
ID    NUMBER    自動(dòng)編號(hào)
NAME    VARCHAR2(20)    工作流名稱
STATE    NUMBER    工作流狀態(tài)

5.2.    OS_CURRENTSTEP
當(dāng)前步驟表,存放當(dāng)前正在進(jìn)行步驟的數(shù)據(jù)

字段名    數(shù)據(jù)類型    說明
ID    NUMBER    自動(dòng)編號(hào)
ENTRY_ID    NUMBER    工作流編號(hào)
STEP_ID    NUMBER    步驟編號(hào)
ACTION_ID    NUMBER    動(dòng)作編號(hào)
OWNER    VARCHAR2(20)    步驟的所有者
START_DATE    DATE    開始時(shí)間
FINISH_DATE    DATE    結(jié)束時(shí)間
DUE_DATE    DATE    授權(quán)時(shí)間
STATUS    VARCHAR2(20)    狀態(tài)
CALLER    VARCHAR2(20)    操作人員的賬號(hào)名稱

5.3.    OS_CURRENTSTEP_PREV
前步驟表,存放當(dāng)前步驟和上一個(gè)步驟的關(guān)聯(lián)數(shù)據(jù)

字段名    數(shù)據(jù)類型    說明
ID    NUMBER    當(dāng)前步驟編號(hào)
PREVIOUS    NUMBER    前步驟編號(hào)

5.4.    OS_HISTORYSTEP
歷史步驟表,存放當(dāng)前正在進(jìn)行步驟的數(shù)據(jù)

字段名    數(shù)據(jù)類型    說明
ID    NUMBER    自動(dòng)編號(hào)
ENTRY_ID    NUMBER    工作流編號(hào)
STEP_ID    NUMBER    步驟編號(hào)
ACTION_ID    NUMBER    動(dòng)作編號(hào)
OWNER    VARCHAR2(20)    步驟的所有者
START_DATE    DATE    開始時(shí)間
FINISH_DATE    DATE    結(jié)束時(shí)間
DUE_DATE    DATE    授權(quán)時(shí)間
STATUS    VARCHAR2(20)    狀態(tài)
CALLER    VARCHAR2(20)    操作人員的賬號(hào)名稱

5.5.    OS_HISTORYSTEP_PREV
前歷史步驟表,存放歷史步驟和上一個(gè)步驟的關(guān)聯(lián)數(shù)據(jù)

字段名    數(shù)據(jù)類型    說明
ID    NUMBER    當(dāng)前歷史步驟編號(hào)
PREVIOUS    NUMBER    前歷史步驟編號(hào)

5.6.    OS_PROPERTYENTRY
屬性表,存放臨時(shí)變量

字段名    數(shù)據(jù)類型    說明
GLOBAL_KEY    VARCHAR2(255)    全局關(guān)鍵字
ITEM_KEY    VARCHAR2(255)    條目關(guān)鍵字
ITEM_TYPE    NUMBER    條目類型
STRING_VALUE    VARCHAR2(255)    字符值
DATE_VALUE    DATE    日期值
DATA_VALUE    BLOB    數(shù)據(jù)值
FLOAT_VALUE    FLOAT    浮點(diǎn)值
NUMBER_VALUE    NUMBER    數(shù)字值
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
osworkflow descriptor 解析片斷
OSWorkflow深層講解系列(一)初始化的原理 - 胡長城(銀狐999)BLOG - ...
OSWorkflow使用問答
OSWorkflow - OSWorkflow - Testing your workflow
健身的真相:其實(shí)一次只需20分鐘!
OSWorkFlow深入淺出(2)
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服