因?yàn)轫椖啃枰隽艘粋€簡單的工作流引擎,用于集成訂單管理(IOM)的生產(chǎn)調(diào)度。之前的文章有提到。原想著有這樣一個引擎來進(jìn)行生產(chǎn)調(diào)度,設(shè)計好業(yè)務(wù)流程后就可以面朝大海,春暖花開。在還生產(chǎn)系統(tǒng)對接的時候發(fā)現(xiàn)有一部分還是人工處理更好,畢竟不是所有的流程都能那么細(xì)致合理。
下面是我們的解決方案,圖片是從wps里另存出來的,不知道咋就變成黑底了。
1.1 問題描述
工作流引擎處理流程調(diào)度部分的內(nèi)容。客戶下訂單之后,協(xié)調(diào)各生產(chǎn)部門進(jìn)行工作。
最理想化的情況是對客戶發(fā)起的每一種操作都定義一組流程,在流程執(zhí)行的過程中每種狀下態(tài)當(dāng)有新的操作進(jìn)來也相應(yīng)定義一組流程,但這樣一來流程設(shè)計工作極其繁瑣,容易出錯,不利于降低管理難度減輕管理工作量。
一個折中的方案是對執(zhí)行中的流程進(jìn)行流程合并。選擇對一部分操作不創(chuàng)建新流程,給用戶提示信息,由用戶覺得如何進(jìn)行手工操作。
1.2 問題分析
1.2.1 概念定義
生產(chǎn)平臺:生產(chǎn)平臺是由人和機(jī)器構(gòu)成的,能將一定輸入轉(zhuǎn)化為特定輸出的有機(jī)整體。對應(yīng)于工廠中的生產(chǎn)車間概念。
生產(chǎn)線:生產(chǎn)是與相關(guān)的一個部門或一組操作對應(yīng)的組織。類似于項目組的概念,是依據(jù)生產(chǎn)流程對生產(chǎn)能力的一種劃分方式。
產(chǎn)品:產(chǎn)品是指中企動力運(yùn)用營銷手段,將業(yè)務(wù)或業(yè)務(wù)組合附加上銷售對象、銷售地域、資費(fèi)計劃、銷售渠道、服務(wù)水平及配套資源屬性后的產(chǎn)物,是向客戶最終交付的、客戶可以購買的產(chǎn)品單元組合實(shí)例。
產(chǎn)品單元:產(chǎn)品單元是業(yè)務(wù)在生產(chǎn)系統(tǒng)的具體表現(xiàn)。
產(chǎn)品單元與生產(chǎn)線之間是多對多的關(guān)系。如果一個產(chǎn)品單元需要跨多個生產(chǎn)線,引擎需要調(diào)度產(chǎn)品單元在不同生產(chǎn)線的生產(chǎn)過程。
流程組:流程組指由一系列操作流程組成的流程集合,有流程間的先后順序。流程組在此是由產(chǎn)品和操作類型共同決定的。
流程:流程是一系列操作環(huán)節(jié)的集合。環(huán)節(jié)間有并行和串行的關(guān)系。流程在此處是由平臺和操作類型決定的。
環(huán)節(jié):環(huán)節(jié)是一系列操作的集合。環(huán)節(jié)此處定義是由一個人的一個或多個可并行的操作決定的。
任務(wù):任務(wù)是可執(zhí)行的最小單位。任務(wù)具有原子性,是環(huán)節(jié)的組成部分。一般一個任務(wù)完成一個事務(wù)。
一個環(huán)節(jié)包含多個任務(wù),一個流程包含多個環(huán)節(jié),一個流程組包含多個流程。
1.2.2 問題描述
以一件定制服裝的過程為例,只是為了說明問題對流程做了簡化。見下圖。
定制服裝生產(chǎn)流程:

最簡化的情況,客戶在提交了定制服裝生產(chǎn)的要求后便不再干預(yù),生產(chǎn)線就按流程走就可以了。
但是客戶可能會在生產(chǎn)的各個環(huán)節(jié)提出變更要求,已經(jīng)制作完成了客戶要求加個兜,已經(jīng)質(zhì)檢完成了客戶要求加個紐扣,已經(jīng)包裝好了客戶要求領(lǐng)子樣式改改。
如果把每一種可能都定義一組流程,就這個簡化流程全部列出來也夠貼一面墻了。所以我們采取了一種折中的方案,在大多數(shù)情況下正在生產(chǎn)時客戶要求有變化,通過一個描述性的工單告訴生產(chǎn)線負(fù)責(zé)人暫停生產(chǎn)、并由負(fù)責(zé)人來決定回退到那個環(huán)節(jié)重新進(jìn)行。
如果都包裝好了客戶還要改,那就暫停當(dāng)前流程,走和客戶打官司的流程了,這種情況下需要一個流程。
本方案通過對生產(chǎn)中的流程進(jìn)行合并,減少流程定義的工作量和復(fù)雜程性度。
1.3 問題解決
1.3.1 工單
1.3.1.1 邏輯模型
訂單生成工單的過程,稱為合單。
訂單工單關(guān)系 |
工單屬性 |

|

|
現(xiàn)在所描述的都是對同一個訂購實(shí)例所下各種訂單的合單處理情況。
1.訂購實(shí)例第一次下訂單,根據(jù)訂單生成工單和工單明細(xì)。
2.訂購實(shí)例第二次下訂單
a) 之前生成的工單已經(jīng)竣工,生成新工單和新工單明細(xì)。
b) 之前生成的工單還未生產(chǎn),廢棄該工單,生成新工單和新工單明細(xì)
c) 之前生成的工單生產(chǎn)中,廢棄該工單,繼續(xù)沿用原工單編號,合并生成新工單和新工單明細(xì)。新工單狀態(tài)為生產(chǎn)中。
在工單明細(xì)表增加字段“產(chǎn)品單元變更標(biāo)識”,如果產(chǎn)品單元對應(yīng)的屬性內(nèi)容在兩次訂單中沒有變化,引擎不暫定產(chǎn)品單元觸發(fā)的流程。
1.3.2 流程實(shí)例化
1.3.2.1 邏輯模型
流程定義模型見下圖,概念定義部分對名詞有描述。
流程定義 |
流程實(shí)例化 |

|

|
在業(yè)務(wù)支撐系統(tǒng)經(jīng)常使用的一個概念,實(shí)例化。
用戶購買一個產(chǎn)品后,就產(chǎn)生一個產(chǎn)品的實(shí)例化,區(qū)別于別的客戶購買的同類產(chǎn)品,稱為訂購實(shí)例。
定義一組流程用來處理產(chǎn)品生產(chǎn)過程,具體到某個訂購實(shí)例的生產(chǎn)過程的實(shí)例化,就有了流程組實(shí)例、流程實(shí)例、環(huán)節(jié)實(shí)例和任務(wù)實(shí)例。
1.3.2.2 流程定義過程
有了流程定義的模型,我們就是可以設(shè)計或者叫定義產(chǎn)品的生產(chǎn)流程。
完成一件復(fù)雜的工作,總是需要一個步驟一個步驟的完成,每個步驟稱為一個環(huán)節(jié),在這個環(huán)節(jié)下可能需要做幾個事情,每個要做的事情稱為一個任務(wù)。
1.根據(jù)生產(chǎn)部門劃分生產(chǎn)線
2.根據(jù)生產(chǎn)線+操作,定義流程,把流程中的任務(wù)根據(jù)負(fù)責(zé)人劃分為不同的環(huán)節(jié)。
3.按照產(chǎn)品涉及的流程劃分為不同的流程組。
1.3.2.3 流程實(shí)例化
1.實(shí)例化約束
a) 一個訂購實(shí)例當(dāng)前只有一個運(yùn)行中的流程組實(shí)例;
b) 流程合并前先暫停,避免和引擎并發(fā)競爭。
2.實(shí)例化過程
a) 接收工單,檢查訂購實(shí)例當(dāng)前是否有流程組實(shí)例在運(yùn)行中;
i. 無,實(shí)例化一個新的流程組實(shí)例
ii. 檢查是否屬于同一個流程組定義
1. 是同一個流程組,進(jìn)行流程合并。
2. 不是同一個流程組,暫不實(shí)例化,待下一次輪詢再處理。
流程合并細(xì)節(jié)見《流程合并詳細(xì)設(shè)計》
1.3.3 流程引擎
1.3.3.1 模型狀態(tài)
1.已實(shí)例化
2.已分配(負(fù)責(zé)人)
3.執(zhí)行中
4.暫停
5.已完成

流程啟動后按順序執(zhí)行,當(dāng)要回到上一步驟時,監(jiān)控頁面支持回退和回滾兩種操作。
回退,當(dāng)前執(zhí)行中/暫停的環(huán)節(jié)設(shè)置為已分配,上一環(huán)節(jié)由已完成設(shè)置為執(zhí)行中。
回滾,對任務(wù)可以執(zhí)行其反任務(wù)。
1.3.3.2 功能描述
1.引擎輪詢程序,檢查處于執(zhí)行中狀態(tài)的環(huán)節(jié),如果環(huán)節(jié)下所有關(guān)鍵任務(wù)都已完成則環(huán)節(jié)進(jìn)入已完成狀態(tài),下一環(huán)節(jié)進(jìn)入執(zhí)行中狀態(tài)。
2.環(huán)節(jié)實(shí)例化后處于已實(shí)例化狀態(tài),用戶在任務(wù)分配頁面指定環(huán)節(jié)負(fù)責(zé)人,環(huán)節(jié)處于已分配狀態(tài),上一環(huán)節(jié)完成后由引擎設(shè)置本環(huán)節(jié)進(jìn)入執(zhí)行中狀態(tài)。
3.鑒于引擎對執(zhí)行中的環(huán)節(jié)進(jìn)行調(diào)度工作,實(shí)例化程序和頁面監(jiān)控程序在對執(zhí)行中的環(huán)節(jié)操作時,需先暫停環(huán)節(jié)。
4.監(jiān)控頁面支持對流程、環(huán)節(jié)的回退,支持對任務(wù)的回滾。