zyskm用夢(mèng)想丈量人生,用奔跑丈量激情

          工作流流程合并

                  因?yàn)轫?xiàng)目需要做了一個(gè)簡(jiǎn)單的工作流引擎,用于集成訂單管理(IOM)的生產(chǎn)調(diào)度。之前的文章有提到。原想著有這樣一個(gè)引擎來進(jìn)行生產(chǎn)調(diào)度,設(shè)計(jì)好業(yè)務(wù)流程后就可以面朝大海,春暖花開。在還生產(chǎn)系統(tǒng)對(duì)接的時(shí)候發(fā)現(xiàn)有一部分還是人工處理更好,畢竟不是所有的流程都能那么細(xì)致合理。
          下面是我們的解決方案,圖片是從wps里另存出來的,不知道咋就變成黑底了。
          1.1 問題描述

          工作流引擎處理流程調(diào)度部分的內(nèi)容。客戶下訂單之后,協(xié)調(diào)各生產(chǎn)部門進(jìn)行工作

          最理想化的情況是對(duì)客戶發(fā)起的每一種操作都定義一組流程,在流程執(zhí)行的過程中每種狀下態(tài)當(dāng)有新的操作進(jìn)來也相應(yīng)定義一組流程,但這樣一來流程設(shè)計(jì)工作極其繁瑣,容易出錯(cuò),不利于降低管理難度減輕管理工作量。

          一個(gè)折中的方案是對(duì)執(zhí)行中的流程進(jìn)行流程合并。選擇對(duì)一部分操作不創(chuàng)建新流程,給用戶提示信息,由用戶覺得如何進(jìn)行手工操作。

          1.2 問題分析

          1.2.1 概念定義

          生產(chǎn)平臺(tái)生產(chǎn)平臺(tái)是由人和機(jī)器構(gòu)成的,能將一定輸入轉(zhuǎn)化為特定輸出的有機(jī)整體對(duì)應(yīng)于工廠中的生產(chǎn)車間概念。

          生產(chǎn)線生產(chǎn)是與相關(guān)的一個(gè)部門或一組操作對(duì)應(yīng)的組織。類似于項(xiàng)目組的概念,是依據(jù)生產(chǎn)流程對(duì)生產(chǎn)能力的一種劃分方式。

          產(chǎn)品:產(chǎn)品是指中企動(dòng)力運(yùn)用營銷手段,將業(yè)務(wù)或業(yè)務(wù)組合附加上銷售對(duì)象、銷售地域、資費(fèi)計(jì)劃、銷售渠道、服務(wù)水平及配套資源屬性后的產(chǎn)物,是向客戶最終交付的、客戶可以購買的產(chǎn)品單元組合實(shí)例。

          產(chǎn)品單元產(chǎn)品單元是業(yè)務(wù)在生產(chǎn)系統(tǒng)的具體表現(xiàn)

          產(chǎn)品單元與生產(chǎn)線之間是多對(duì)多的關(guān)系。如果一個(gè)產(chǎn)品單元需要跨多個(gè)生產(chǎn)線,引擎需要調(diào)度產(chǎn)品單元在不同生產(chǎn)線的生產(chǎn)過程。

          流程組:流程組指由一系列操作流程組成的流程集合,有流程間的先后順序。流程組在此是由產(chǎn)品和操作類型共同決定的。

          流程:流程是一系列操作環(huán)節(jié)的集合。環(huán)節(jié)間有并行和串行的關(guān)系。流程在此處是由平臺(tái)和操作類型決定的。

          環(huán)節(jié):環(huán)節(jié)是一系列操作的集合。環(huán)節(jié)此處定義是由一個(gè)人的一個(gè)或多個(gè)可并行的操作決定的。

          任務(wù):任務(wù)是可執(zhí)行的最小單位。任務(wù)具有原子性,是環(huán)節(jié)的組成部分。一般一個(gè)任務(wù)完成一個(gè)事務(wù)。

          一個(gè)環(huán)節(jié)包含多個(gè)任務(wù),一個(gè)流程包含多個(gè)環(huán)節(jié),一個(gè)流程組包含多個(gè)流程。

          1.2.2 問題描述

          以一件定制服裝的過程為例,只是為了說明問題對(duì)流程做了簡(jiǎn)化。見下圖

          定制服裝生產(chǎn)流程:
                

          最簡(jiǎn)化的情況,客戶在提交了定制服裝生產(chǎn)的要求后便不再干預(yù),生產(chǎn)線就按流程走就可以了。

          但是客戶可能會(huì)在生產(chǎn)的各個(gè)環(huán)節(jié)提出變更要求,已經(jīng)制作完成了客戶要求加個(gè)兜,已經(jīng)質(zhì)檢完成了客戶要求加個(gè)紐扣,已經(jīng)包裝好了客戶要求領(lǐng)子樣式改改。

          如果把每一種可能都定義一組流程,就這個(gè)簡(jiǎn)化流程全部列出來也夠貼一面墻了。所以我們采取了一種折中的方案,在大多數(shù)情況下正在生產(chǎn)時(shí)客戶要求有變化,通過一個(gè)描述性的工單告訴生產(chǎn)線負(fù)責(zé)人暫停生產(chǎn)、并由負(fù)責(zé)人來決定回退到那個(gè)環(huán)節(jié)重新進(jìn)行。

          如果都包裝好了客戶還要改,那就暫停當(dāng)前流程,走和客戶打官司的流程了,這種情況下需要一個(gè)流程。

          本方案通過對(duì)生產(chǎn)中的流程進(jìn)行合并,減少流程定義的工作量和復(fù)雜程性度。

          1.3 問題解決

          1.3.1 工單

          1.3.1.1 邏輯模型

          訂單生成工單的過程,稱為合單

          訂單工單關(guān)系

          工單屬性

          現(xiàn)在所描述的都是對(duì)同一個(gè)訂購實(shí)例所下各種訂單的合單處理情況。

          1.訂購實(shí)例第一次下訂單,根據(jù)訂單生成工單和工單明細(xì)。

          2.訂購實(shí)例第二次下訂單

          a) 之前生成的工單已經(jīng)竣工,生成新工單和新工單明細(xì)。

          b) 之前生成的工單還未生產(chǎn),廢棄該工單,生成新工單和新工單明細(xì)

          c) 之前生成的工單生產(chǎn)中,廢棄該工單,繼續(xù)沿用原工單編號(hào),合并生成新工單和新工單明細(xì)。新工單狀態(tài)為生產(chǎn)中。

          在工單明細(xì)表增加字段“產(chǎn)品單元變更標(biāo)識(shí)”,如果產(chǎn)品單元對(duì)應(yīng)的屬性內(nèi)容在兩次訂單中沒有變化,引擎不暫定產(chǎn)品單元觸發(fā)的流程。

          1.3.2 流程實(shí)例化

          1.3.2.1 邏輯模型

          流程定義模型見下圖,概念定義部分對(duì)名詞有描述。

          流程定義

          流程實(shí)例化

          在業(yè)務(wù)支撐系統(tǒng)經(jīng)常使用的一個(gè)概念,實(shí)例化。

          用戶購買一個(gè)產(chǎn)品后,就產(chǎn)生一個(gè)產(chǎn)品的實(shí)例化,區(qū)別于別的客戶購買的同類產(chǎn)品,稱為訂購實(shí)例。

          定義一組流程用來處理產(chǎn)品生產(chǎn)過程,具體到某個(gè)訂購實(shí)例的生產(chǎn)過程的實(shí)例化,就有了流程組實(shí)例、流程實(shí)例、環(huán)節(jié)實(shí)例和任務(wù)實(shí)例。

          1.3.2.2 流程定義過程

          有了流程定義的模型,我們就是可以設(shè)計(jì)或者叫定義產(chǎn)品的生產(chǎn)流程。

          完成一件復(fù)雜的工作,總是需要一個(gè)步驟一個(gè)步驟的完成,每個(gè)步驟稱為一個(gè)環(huán)節(jié),在這個(gè)環(huán)節(jié)下可能需要做幾個(gè)事情,每個(gè)要做的事情稱為一個(gè)任務(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) 一個(gè)訂購實(shí)例當(dāng)前只有一個(gè)運(yùn)行中的流程組實(shí)例;

          b) 流程合并前先暫停,避免和引擎并發(fā)競(jìng)爭(zhēng)。

          2.實(shí)例化過程

          a) 接收工單,檢查訂購實(shí)例當(dāng)前是否有流程組實(shí)例在運(yùn)行中;

          i. 無,實(shí)例化一個(gè)新的流程組實(shí)例

          ii. 檢查是否屬于同一個(gè)流程組定義

          1. 是同一個(gè)流程組,進(jìn)行流程合并。

          2. 不是同一個(gè)流程組,暫不實(shí)例化,待下一次輪詢?cè)偬幚怼?/span>

          流程合并細(xì)節(jié)見《流程合并詳細(xì)設(shè)計(jì)》

          1.3.3 流程引擎

          1.3.3.1 模型狀態(tài)

          1.已實(shí)例化

          2.已分配(負(fù)責(zé)人)

          3.執(zhí)行中

          4.暫停

          5.已完成


          流程啟動(dòng)后按順序執(zhí)行,當(dāng)要回到上一步驟時(shí),監(jiān)控頁面支持回退和回滾兩種操作。

          回退,當(dāng)前執(zhí)行中/暫停的環(huán)節(jié)設(shè)置為已分配,上一環(huán)節(jié)由已完成設(shè)置為執(zhí)行中。

          回滾,對(duì)任務(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.鑒于引擎對(duì)執(zhí)行中的環(huán)節(jié)進(jìn)行調(diào)度工作,實(shí)例化程序和頁面監(jiān)控程序在對(duì)執(zhí)行中的環(huán)節(jié)操作時(shí),需先暫停環(huán)節(jié)。

          4.監(jiān)控頁面支持對(duì)流程、環(huán)節(jié)的回退,支持對(duì)任務(wù)的回滾。

          posted on 2012-02-20 10:21 zyskm 閱讀(2208) 評(píng)論(3)  編輯  收藏

          評(píng)論

          # re: 工作流流程合并[未登錄] 2012-02-20 19:48 qmx_zhq

          是否有人用JBPM做過工作流啊???  回復(fù)  更多評(píng)論   

          # re: 工作流流程合并[未登錄] 2012-02-21 09:51 zyskm

          沒用過,對(duì)應(yīng)集成訂單系統(tǒng)(iom)來講,jbpm太復(fù)雜了。@qmx_zhq
            回復(fù)  更多評(píng)論   

          # re: 工作流流程合并[未登錄] 2013-09-16 14:10 1

          342312  回復(fù)  更多評(píng)論   


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 建水县| 裕民县| 盐山县| 内丘县| 扶绥县| 怀来县| 抚松县| 郴州市| 垣曲县| 浏阳市| 东乡县| 无棣县| 仪陇县| 津市市| 灵川县| 岑溪市| 兰西县| 库伦旗| 盐津县| 成武县| 唐山市| 武冈市| 甘泉县| 铁岭市| 杂多县| 全州县| 达孜县| 石景山区| 德州市| 阿克苏市| 莱西市| 驻马店市| 油尖旺区| 广宗县| 汽车| 民丰县| 镇康县| 崇州市| 西畴县| 汤阴县| 高青县|