OSWorkflow 工作流的入門知識點.
一、工作流框架的選擇
由於開源的流行我們可以有更多的選擇,這給我們帶來了很多的方便,好處多多不用說了,但也給我們帶了了一些麻煩,用Java 的人都瞭解,百家爭鳴讓人眼花繚亂,一個重要的事情是選擇,哪一個適合自己,或者說你更喜歡哪一個。選擇也是一個難題。選擇的好能節省很多時間,少走彎路。
在這個問題上我沒有選擇,因為我不是這個方面的主要負責人,框架的選擇已經定下來了,OSWorkFlow.這對我也許是個好訊息,因為我不需要再在大量的框架中去選擇,只需要專一於一個,省去大量的時間。
三、OSWorkFlow主要優勢
OSWorkflow 給你絕對的靈活性。OSWorkflow 被認為是一種“低階別”工作流實現。與其他工作流系統能用圖示表現“Loops(迴路)”和“Conditions(條件)”相比,OSWorkflow 只是手工“編碼(Coded)”來實現的。但這並不能說實際的程式碼是需要完全手工編碼的,指令碼語言能勝任這種情形。OSWorkflow 不希望一個非技術使用者修改工作流程,雖然一些其他工作流系統提供了簡單的 GUI 用於工作流編輯,但像這樣改變工作流,通常會破壞這些應用。所以,進行工作流調整的最佳人選是開發人員,他們知道該怎麼改變。不過,在最新的版本中,OSWorkflow 也提供了 GUI 設計器來協助工作流的編輯。
OSWorkflow 基於有限狀態機概念。每個 state 由 step ID 和 status 聯合表現(可簡單理解為 step 及其 status 表示有限狀態機的 state)。一個 state 到另一 state 的 transition 依賴於 action 的發生,在工作流生命期內有至少一個或多個活動的 state。這些簡單概念展現了 OSWorkflow 引擎的核心思想,並允許一個簡單 XML 檔案解釋工作流業務流程。
上邊這段話是從OSWorkFlow的教程中得到的,總結一下,OSWorkFlow是基於xml手工配置的,它特點是靈活,它認為工作流的調整應該是程式設計師的事情。
四、OSWorkFlow核心概念
步驟(Step)
一個 Step 描述的是工作流所處的位置。可能從一個 Step Transtion(流轉)到另外一個 Step,或者也可以在同一個 Step 內流轉(因為 Step 可以通 Status 來細分,形成多個State)。一個流程裡面可以多個Step。
狀態(Status)
工作流 Status 是用來描述工作流程中具體Step(步驟)狀態的字串。OSWorkflow 的有 Underway(進行中)、Queued(等候處理中)、Finished(完成)三種 Status。一個實際State(狀態)真正是由兩部分組成:State = (Step + Status) 。
流轉(Transtion)
一個State到另一個State的轉移。
動作(Action)
Action 觸發了發生在 Step 內或 Step 間的流轉,或者說是基於 State 的流轉。一個 step 裡面可以有多個Action。Action 和Step 之間的關係是,Step 說明“在哪裡”,Action 說明“去哪裡”。 一個 Action 典型地由兩部分組成:可以執行此Action(動作)的
Condition(條件),以及執行此動作後的 Result(結果)。
條件(Condition)
類似於邏輯判斷,可包含“AND”和“OR”邏輯。比如一個請假流程中的“本部門審批階段”,該階段利用“AND”邏輯,判斷流程狀態是否為等候處理中,以及審批者是否為本部門主管。
結果(Result)
Result 代表執行Action(動作)後的結果,指向新的 Step 及其 Step Status,也可能進入 Split 或者 Join。Result 分為兩種, Contidional-Result (有條件結果),只有條件為真時才使用該結果,和 Unconditional-Result(無條件結果),當條件不滿足或沒有條件時使用該結果。
分離/連線(Split/Join)
流程的切分和融合。很簡單的概念,Split 可以提供多個 Result(結果);Join 則判斷多個 Current Step 的態提供一個 Result(結果)。
好了,到這裡,工作流的一個概貌是出來了。在下邊的文章中會以OSWorkFlow為例來進入工作流的天地。
相關文章
- OSWorkFlow入門指南
- React入門知識點整理React
- Canvas快速入門知識點Canvas
- Python入門必知的知識點!Python基礎入門Python
- Dubbo基礎入門知識點
- Java入門基礎知識點Java
- Python入門知識點彙總Python
- 【知識點】圖與圖論入門圖論
- PHP入門易忘知識點彙總PHP
- Spring入門系列:淺析知識點Spring
- Oracle入門基本知識一點通(轉)Oracle
- Docker入門知識Docker
- HTTP入門知識HTTP
- .NET入門知識
- 這裡有研究工作流osworkflow的嗎?
- Hibernate的入門知識
- Python入門必備知識點總結Python
- OpenGL ES 2.0學習(一)入門知識點
- Flutter入門,開發者需要知道的10個知識點Flutter
- Python入門必須知道的11個知識點Python
- 知識圖譜入門——知識表示與知識建模
- Blender入門知識整理
- Struts入門初步知識
- TypeScript基本知識點整理(看完絕對入門---真的!!)TypeScript
- 簡單小結密碼學入門知識點密碼學
- 入門Java你需要了解的幾個知識要點!Java
- Python基礎入門知識點——if 語句簡介Python
- Python基礎入門知識點——深淺拷貝Python
- AI工程師面試知識點:深度學習入門AI工程師面試深度學習
- Python基礎入門知識點——Python中的異常Python
- 告軟體測試初學者:入門需掌握的知識點
- Linux新手入門必須要掌握的10個知識點!Linux
- Flutter2 入門知識Flutter
- HTTP協議_入門知識HTTP協議
- python入門基本知識Python
- JavaScript 基礎知識入門JavaScript
- 知識圖譜入門2
- docker入門知識總結Docker