1. 程式人生 > >通用工作流引擎資料庫設計的簡單構思

通用工作流引擎資料庫設計的簡單構思

工作中接觸到工作流的概念,於是自己構思了一個簡單的通用工作流資料庫。

什麼是工作流和工作流引擎

百度百科:

工作流(Workflow),指“業務過程的部分或整體在計算機應用環境下的自動化”。是對工作流程及其各操作步驟之間業務規則的抽象、概括描述。在計算機中,工作流屬於計算機支援的協同工作(CSCW)的一部分。後者是普遍地研究一個群體如何在計算機的幫助下實現協同工作的。
工作流主要解決的主要問題是:為了實現某個業務目標,利用計算機在多個參與者之間按某種預定規則自動傳遞文件、資訊或者任務。

維基百科:

A workflow consists of an orchestrated and repeatable pattern of business activity enabled by the systematic organization of resources into processes that transform materials, provide services, or process information. It can be depicted as a sequence of operations, declared as work of a person or group, an organization of staff, or one or more simple or complex mechanisms.
From a more abstract or higher-level perspective, workflow may be considered a view or representation of real work. The flow being described may refer to a document, service or product that is being transferred from one step to another.
Workflows may be viewed as one fundamental building block to be combined with other parts of an organization’s structure such as information technology, teams, projects and hierarchies.

簡單通俗不嚴謹的講,工作流就是用於傳遞資訊的一整套流程。

例如,去銀行辦理貸款,從使用者申請到銀行稽核再到最後使用者拿到錢,這整個過程就是一個工作流,銀行肯定也有自己的一套工作流系統,用於不同工作人員不同部門之前的寫作,從而完成貸款這件事情。

而工作流的核心就是工作流引擎。

所謂工作流引擎是指workflow作為應用系統的一部分,併為之提供對各應用系統有決定作用的根據角色、分工和條件的不同決定資訊傳遞路由、內容等級等核心解決方案。工作流引擎包括了,流程的節點管理、流向管理、流程樣例管理等重要功能。

資料庫設計

對於一個通用的工作流引擎資料庫,我覺得它應該具備以下幾個功能:

  1. 工作流引擎適用於多種型別事務
  2. 流程排程流轉,如建立,結束,跳躍,回退,終止
  3. 自定義動作及事件釋出
  4. 順序處理與並行處理

這裡需要解釋一下什麼是任務的順序執行和並行執行
這裡寫圖片描述
(圖片來自網路)
上一個任務的處理者指定下一個任務的處理者,必須當前處理人處理完畢,流程才能繼續,為順序處理,上圖左邊模式。
上一個任務的處理者指定多個處理人,由任一處理人處理,不分前後順序,當所有處理人處理完畢,即可進入下一步驟,為並行處理,上圖右邊模式。

最後,我設計出下面的資料庫引擎結構
這裡寫圖片描述

  • work表,即通用的工作流程表,代表一專案完整事務,state表示狀態,有進行中,完結,終止三種狀態,type指向具體事項型別,例如貸款事務,取款事務。
  • task表,即操作任務表,表代表一種操作型別,type指向具體的操作型別,以銀行貸款為例,type指向各種具體的稽核操作。
  • work_task表,作為中間表,連線work表和task表,state欄位表示狀態,有進行中,完結,終止三種狀態,next_id指向下一個操作,通過操作這個欄位,實現流程的回退,跳躍和終止。
  • person表,表示執行task操作的人。
  • task_person表,作為中間表,關聯task表和person表,type表示任務操作者的執行型別,有順序執行和並行執行兩種。

設計思路

下面,我將闡述我的設計思路。
我們以銀行貸款為例,大致流程為:
使用者發起貸款》》稽核流程1》》稽核流程2》》發放貸款

我們需要根據具體業務加入具體的型別表,最後的資料庫結構為

這裡寫圖片描述

其中
這裡寫圖片描述
loan表為貸款業務表,它表示一次貸款,是work的一種型別。

這裡寫圖片描述

通過task的type欄位,定義多種實際操作型別,approval1,approval2,draw分別表示單人稽核操作,多人稽核操作以及使用者最後的取款操作。

這裡寫圖片描述

通過work_task表將work和task關聯的同時,也實現了task的執行順序,同時,加入next_id用來表明下一個task,這樣我們通過操作next_id就可以動態操作流程。當next_id指向自己的時候,說明流程已經結束。person_state表示執行人的狀態。

  • 跳躍:將next_id指向我們最終的task,那麼中間的task將會跳過。
  • 回退:為了避免task流程陷入死迴圈,回退是加入新task,然後再將next_id指向新加入的第一條task。
    例如,原本的流程是abcde,這時我們到了d這一步,需要回退到b,我們就可以在work_task中再加入bc,變成abcdbcde,只要把舊bc的資訊複製到新bc上即可。
  • 終止:直接在next_id賦值為空。

寫在最後

這個工作流引擎只是本人的突發奇想,文章主要是闡述我想到的設計思路,至於具體的欄位設計還有待斟酌,也並未在大型的工作流專案中實驗過,所以可能存在不合理的地方,希望以後能繼續改進。

相關推薦

通用工作引擎資料庫設計簡單構思

工作中接觸到工作流的概念,於是自己構思了一個簡單的通用工作流資料庫。 什麼是工作流和工作流引擎 百度百科: 工作流(Workflow),指“業務過程的部分或整體在計算機應用環境下的自動化”。是對工作流程及其各操作步驟之間業務規則的抽象、概括描

通用工作引擎核心的設計與實現

【摘要】:工作流技術是當前計算機應用領域的一個研究熱點,利用工作流技術對企業進行業務過程的建模和分析不僅可以規範化企業的業務流程,發現業務流程中不合理和低效的環節,進而對企業的業務過程進行優化重組,達到全面提高企業運作效率的目的,而且所建立的業務過程模型本身就是企業非常重要的知識庫和規則庫,可以成為指導企業實

Activiti工作引擎web設計不顯示問題總結

首先開啟官網地址:http://mvnrepository.com/artifact/org.activiti/activiti-webapp-explorer2下載最新的war包,然後解壓後,放到tomcat的webapp下。1、首先要將應用名稱改為activiti-exp

Activiti工作引擎資料庫表結構

466355109,可以相互交流 資料庫表的命名 Acitiviti資料庫中表的命名都是以ACT_開頭的。第二部分是一個兩個字元用例表的標識。此用例大體與服務API是匹配的。 l  ACT_RE

工作引擎開發系列二資料庫設計

     在前面一節中簡單的講解了基本原理,從這節開始會詳細講解。首先需要講解的就是資料設計,下面就是資料庫的相關設計 表名:WorkflowTemplate--工作流模板 序號 列名 資料型別 長度 小數位 標識 主鍵 允許空 預設值 說明 1 TemplateI

CCBPM工作引擎的消息機制與設計

用戶 成功 通訊 strong class 定義 流程引擎 過程 興趣 keyword:ccflowjflow 消息機制流程引擎 自己主動發送短信 發送郵件 發送消息 流程引擎微信連接 消息接口 關於ccbpm: 我們把ccflow jflow兩個版本號的工作流引擎統稱

工作引擎設計

use tor ems top idt read mst ren ttr 工作流引擎設計 ENTWorkflow:工作流主表 Name code type isNull 主鍵 ENTWorkfl

Activiti工作引擎學習及流程設計器的安裝(Eclipse外掛)

工作流簡介     我們先來描述一個在工作中經常用到的一個流程:請假     員工張三請假一天 主管王五批准     員工李四請假一天 主管王五不批准  &nbs

簡單瞭解Activity工作引擎

一、 什麼是工作流 以請假為例,現在大多數公司的請假流程是這樣的 員工打電話(或網聊)向上級提出請假申請——上級口頭同意——上級將請假記錄下來——月底將請假記錄上交公司——公司將請假錄入電腦 採用工作流技術的公司的請假流程是這樣的 員工使用賬戶登入系統——點選請假——上級登入系統點選

流程快速開發平臺,工作引擎中介軟體,工作質量考核設計

工作質量考核設計 關鍵字:CCBPM工作質量考核時效考核 需求背景: 我們把在工作流程引擎中的考核分為兩種模式,一種是時效考核、另外一種是質量考核。 時效考核就是對使用者的操作進行時間點的記錄,然後按照一定的規則進行計算出來該人員提前、超時、逾期完成工作的情況進行量化的評

馳騁工作引擎設計系列01 流程元素設計

第1節. 關鍵字 馳騁工作流引擎 流程快速開發平臺 workflow ccflow jflow 第2節. ccflow流程元素設計 流程元素,概要的說就是流程上的畫布內容。 l 馳騁流程引擎元素比較簡,節點、連線線、標籤三種。 l 設定有三個流程屬性、節點屬性、方向條件三種。 l 一個流程模版有一

馳騁工作引擎設計系列02

  流程例項的生成設計 第1節. 關鍵字 馳騁工作流引擎 流程快速開發平臺 workflow ccflow jflow 第2節. 關於WorkID的設計 workid也叫流程例項id, 理解清楚workid的整個過程有助於理解如何獲得資料,以及相關流程引擎表,業務資料表

馳騁工作引擎設計系列03 節點型別定義

第1節. 關鍵字 馳騁工作流引擎 流程快速開發平臺 workflow ccflow jflow 第2節. 節點型別的定義 為了適應分合流的流程,實現多執行緒,我們需要把節點分為5種類型。 第3節. 節點的分類 為了適應與支援多執行緒模式的流程,我們把節點型別分為如下幾種。 普

馳騁工作引擎設計系列04 流程引擎表結構的設計

gin 我們 統計分析 sta 生成 技術分享 追溯 mar pre 第1節. 關鍵字 馳騁工作流引擎 流程快速開發平臺 workflow ccflow jflow 第1節. 流程引擎表結構的設計 流程引擎表是流程引擎控制流程運轉的數據存儲表,是整個流程引擎的核心表。理解表

三款工作引擎比較:WWF、netBPM 和 ccflow 下面將對目前比較主流的三款工作進行介紹和比較,然後通過三款流程引擎分別設計一個較典型的流程來給大家分別演示這三款建立流程的過程.這

下面將對目前比較主流的三款工作流進行介紹和比較,然後通過三款流程引擎分別設計一個較典型的流程來給大家分別演示這三款建立流程的過程.這三款工作流程引擎分別是 Windows Workflow Foundation,NetBPM, CCFlow. NetBPM 與 CCFlow 是兩款國內知名的開源軟體,尤其是

開源工作引擎Shark入門2——使用JaWE設計一個流程

    XPDL描述了工作流的相關元素,如參與者、活動、活動間的轉移、上下文變數等內容,由這些元素組成一個個流程。XPDL是一個xml格式的檔案,可以用文字編輯器直接編輯,但這需要對XPDL規範非常熟悉。JaWE是一個圖形化的XPDL編輯器,利用這個工具就不需要學習枯燥的XPDL中的xml元素了,在圖形介面

幾種開源工作引擎簡單比較

目前開源工作流引擎用的最多的是jbpm , 各種特性都不錯, 文件也比較多, 下面只簡單列舉一下 其他幾種工作流引擎的特性。 Apache ODE Enhydra Shark Bonita Open Business Engine Eclipse JWT  支援的流程建模標準 

馳騁工作引擎設計系列05 啟動流程設計

  啟動流程設計 第1節. 關鍵字 馳騁工作流引擎 流程快速開發平臺 workflow ccflow jflow 第1節. 啟動流程設計 流程啟動是流程運動的第一個環節,有如下幾個步驟,選擇一個流程模版,進入流程啟動程式,其次檢查一下該流程模版是否可以被該人員發起,不能

工作引擎設計之退回任務定義

退回(Rollback Work Item) 退回是針對本人(工作流參與者)的“待辦任務”的操作,即參與者主動退回待辦任務列表中的任務。 為什麼要退回? 參與者接受任務後,發現不應由自己辦理此任務或上一步的執行者辦理有錯誤等情況後,需要將此接受的任務退回給上一步的執行者重新辦

馳騁工作引擎設計系列06 儲存草稿設計

第1節. 關鍵字 馳騁工作流引擎 流程快速開發平臺 workflow ccflow jflow 第1節. ccflow儲存與儲存草稿設計 儲存,就是使用者點選儲存所要執行的工作,在講解這個概念之前,我們要了解什麼是草稿規則。 1.1.1:ccflow 關於草稿規則 定義:流程發起