基於 SOA 的業務流程管理(BPM)和工作流(WF)

来源:http://www.cnblogs.com/SDP2017/archive/2017/08/24/7421580.html
-Advertisement-
Play Games

基於業務組件模型的工作流模塊設計 摘要 當前基於 BPLE 的業務流程管理(BPM)以及基於 XPDL 的工作流(WF)都有成熟的理論和相應的產品支持,特別是在國內,工作流(WF)的應用十分廣泛。本文從流程入手,結合業務流程管理、工作流、績效管理、個人門戶等概念,將業務流程管理和工作流結合起來 ,搭 ...


 基於業務組件模型的工作流模塊設計

 

摘要

 

當前基於 BPLE 的業務流程管理(BPM)以及基於 XPDL 的工作流(WF)都有成熟的理論和相應的產品支持,特別是在國內,工作流(WF)的應用十分廣泛。本文從流程入手,結合業務流程管理、工作流、績效管理、個人門戶等概念,將業務流程管理和工作流結合起來 ,搭建企業級的跨系統的流程整合架構。

 

什麼是流程

 

在面向服務體系架構(Service Oriented Architecture,SOA)中,流程是一個很重要的概念,其中業務流程管理包含了人工任務等,結合《面向服務體系架構(SOA)和數據倉庫(DW)的思考》(以下簡稱《SOA 和 DW》)以及《面向服務體系架構(SOA)和業務組件(BC)的思考》(以下簡稱《SOA 和 BC》)中關於共用庫、業務組件的設計,本文進一步給出了關於如何進行工作流管理組件的設計方法和實現。

 

流程和作業

 

流程(Process)是產生某一結果的一系列作業,是多個人員、多個作業按照一定的規則的有序組合,它關心的是誰做了什麼事,產生了什麼結果,傳遞了什麼信息給誰。流程一定是體現企業價值的,沒有價值的流程是沒有意義的,因此每個流程都有其特定的績效目標。在信息系統中,流程由若幹作業(Operation)按照一定的規則組合而成,可以用業務流程圖來描述,其目標通過績效指標體現。作業是為了實現一個可定義的目標而進行的一系列活動,是業務流程的基本單元。在信息系統中,作業的前端表現為若幹界面,後端由若幹個服務按照一定的規則組合成一個個功能單元。

在本文中,流程是指企業運作的所有工作流程,企業的所有的活動都可以看作是一個個流程,流程是由若幹個作業組成的,在 IT 技術上流程稱為工作流,作業稱為流程節點。

 

流程規範 XPDL 和 BPEL

 

IT 技術中,關於流程最早是以 WfMC 為代表的“業務流程開發商”, 工作流管理聯盟(WfMC)於 1993 年成立,他們主要擁護以 XPDL 作為描述語言來描述業務流程;之後是以

 

OASIS(Organization for the Advancement of Structured Information Standards,結構化信息標準促進組織)組織為代表的,被 IBM,MicroSoft,BEA 所擁護的 BPEL/BPEL4WS

 

規範;之後向來以規範著稱的 OMG 組織也不甘示弱,聯合 BPMI 組織,獨闢蹊徑以 Notation Specification 為入口,首先推出了 BPMN 規範,進而推出了 BPDM(Business Process Definition Metamodel BPDM)。

 

2003 年 4 月 BPEL 規範提交給了 OASIS 更名為 WSBPEL(Web Services Business Process Execution Language)規範。此規範描述如何處理輸入的消息,它不是一個關於業務流程規格化定義的規範。簡單的說,可以將它看作 XML 形式的編程語言,提供將 WSDL-Services 組合成控制流的能力。由於 BPLE 對於人工活動支持不好,為此進一步擴展為 BPEL4PeopleWS-BPEL Extension for People),從只能編排 Web 服務,擴展為同時支持對 Web 服務和基於角色的人工活動進行編排。

 

業務流程管理(BPM)和工作流管理(WFM)

 

業務流程管理(Business Process Management BPM),一般的定義為一套達成企業各種業務環節整合的全面管理模式。BPM 實現了人員、設備、桌面應用系統、企業級後臺應用等內容的優化組合,從而實現跨應用、跨部門、跨合作伙伴與客戶的企業運作。

 

根據 WfMC 的定義,工作流(Work Flow)為自動運作的業務過程部分或整體,表現為參與者對文件、信息或任務按照規程採取行動,並令其在參與者之間傳遞。簡單地說,工作流就是一系列相互銜接、自動進行的業務活動或任務。

 

工作流管理(Workflow Management, WFM)是人與電腦共同工作的自動化協調、控制和通訊,在電腦化的業務過程上,通過在網路上運行軟體,使所有命令的執行都處於受控狀態。在工作流管理下,工作量可以被監督,分派工作到不同的用戶達成平衡。

 

在本文中業務流程管理(BPM),是指基於 BPEL 標準的業務流程整合,主要實現系統和系統之間的整合;工作流(WF)是指人工活動的業務流程,基於 XPDL 標準或者 BPEL4People 標準,實現人機交互的整合,目的是實現系統內部以及跨系統的流程審批。關於業務流程(BPM),當前有很多成熟的產品,不做過多介紹,本文以工作流管理(WFM)為基礎,基於《SOA 和 BC》的方法進行設計,給出了工作流管理組件的設計模型。工作流和績效、個人門戶、即時溝通等緊密相關,比如每個崗位流程節點彙總在一起,在前端展示為個性化門戶,即時溝通平臺實現人員之間實時溝通。

 

業務流程建模符號(BPMN)

 

業務流程建模符號(Business Process Modeling Notation,BPMN)由 BPMI(The Business Process Management Initiative)開發是一套標準叫業務流程建模符號,於 2004 年 5 月對外發佈了 BPMN 1.0 規範。BPMN 的主要目標是提供一些被所有業務用戶容易理解的符號,從創建流程輪廓的業務分析到這些流程的實現,直到最終用戶的管理監控。BPMN 也支持提供一個內部的模型可以生成可執行的 BPEL4WS。BPMN 定義了一個業務流程圖(Business Process Diagram),該業務流程圖基於一個流程圖(Flowcharting),該流程圖被設計用於創建業務流程操作的圖形化模型。而一個業務流程模型 (Business Process Model),指一個由的圖形對象(graphical objects)組成的網狀圖,圖形對象包括活動(acticities)和用於定義這些活動執行順序的流程式控制制器(flow controls)

 

在本文中業務流程管理(BPM),是指基於 BPEL 標準的業務流程整合,主要實現系統和系統之間的整合;工作流(WF)是指人工活動的業務流程,基於 XPDL 標準或者 BPEL4People 標準,主要實現人機之間交互的整合,目的是實現系統內部以及跨系統的審批。關於業務流程(BPM),當前有很多成熟的產品,不做過多介紹,本文以工作流管理(WFM)為主,進行設計,同時考慮到 BPMN 未來將會得到更多的使用,採用 BPMN 來進行畫圖。工作流是和績效緊密相關,每個崗位流程節點彙總在一起,在前端展示為個性化門戶,除了工作流的溝通之外還有消息平臺實現人員之間的協同

 

工作流管理(WFM)組件設計

 

企業可以看作是企業實體對象,包括組織、人員、產品等在不同的環境和條件下的不斷的運轉的過程,實體對象和運轉過程映射到信息系統中,分別對應著數據(可以用 ER 圖描述)和業務流程(可以用流程圖、業務邏輯和業務規則描述)。數據和業務流程能夠全面反映實體對象及其運動的狀態。在現實社會中,實體對象的運動體現為一系列活動,在信息系統中 ,活動表現為一個流程節點,實體對象通過一系列的業務活動直至最終完成任務,在信息系統中體現為數據狀態的不斷變化,直到數據最終完成。

 

在《SOA  BC》一文中提到了關於基於 OSGi 的模塊化的設計思路,工作流管理作為其中的一個公共組件的模塊,如果是提升到企業級的公共服務平臺中,則是獨立的工作流管理業務組件,可以實現跨系統的工作流整合,以下結合《SOA  BC》的思路,進一步細化工作流管理模塊(或工作流管理業務組件)的設計思路。

 

工作流組件的松耦合設計

 

傳統的辦公自動化或者協同辦公系統,要實現基於工作流的流轉,需要有兩個基本的功能:工作流引擎和自定義表單,有了這兩個基本功能就可以在一個系統中實現流程的流轉。但是如果要實現整合企業所有的應用(不管是什麼平臺、哪個開發商),要將所有的業務全部整合到一個工作流平臺中,就需要工作流組件提供一個松耦合的連接方式,將所有的應用整合在一塊,保證現有的系統都能整合到統一的一個工作流中,從而實現統一企業的工作流,全面對企業流程進行監控。

 

結合《SOA  BC》的思路,將工作流組件作為一個獨立的公共組件,為了更好的實現和其它業務組件以及公共組件內部的不同模塊之間的松耦合,工作流組件對外以 Web 服務的方式對外提供介面,通過 ESB 和業務組件進行調用。同時為了保證性能,可以將工作流引擎內嵌到業務組件中,通過類匯流排(API)進行調用。這樣既可以實現和內部業務組件之間的結合,也可以實現和應用外部的系統進行流程整合。從業務組件劃分角度來看,工作流模塊可以作為獨立的業務組件,從方便管理角度來看,將其和其它的功能模塊合併在一起,是公共組件的一個部分。

 

 圖 1. 公共組件模型-工作流模塊

 [註]

表單自定義功能是界面管理模塊的重要功能之一。

本文中的工作流管理組件實際上是公共組件的一個部分。

工作流組件和其他業務組件通過 Web 服務方式調用可以採用非同步和同步傳輸兩種模式。同步傳輸主要適用於兩個系統必須同時提交的業務場景,採用同步傳輸需要等待另外一個系統的反饋信息,對提交 Web 服務的系統有性能的影響;非同步傳輸的方式主要適用於可以非同步提交 Web 服務的業務場景,保證了提交 Web 服務系統的性能,非同步提交的方式需要考慮接受服務的系統出現宕機或者網路故障的情況下還可以準確無誤的將 Web 服務傳遞到接收系統。非同步傳輸一般通過消息中間件完成。

關於松偶合的 Web 服務的調用順序在《SOA  BC》文中建議儘量採用觸發的方式進行調用,基於這種調用方式,業務組件對外只提供查詢或者寫入服務,而不會直接通過寫代碼調用服務,實現業務組件的松偶合,這種調用方式同樣適應於工作流組件中。比如客戶註冊流程,一開始實在 CRM 系統完成的,但是如果隨著業務的發展,客戶註冊採用網上註冊,原來 CRM 系統客戶註冊流程的任務啟動就會發生變化,如果是採用的觸發的方式,僅僅修改流程的編排即可(需要由業務流程管理(BPM)實現),而不需要修改 CRM 的程式。在工作流組件中,最好的一個實現方式就是由工作流組件進行流程的發起,如圖 2-1 啟動流程所示。

 

  圖 2. 工作流組件的松偶合調用

 

為了實現松偶合,業務組件和工作流組件之間不進行業務數據交互,傳遞的僅僅是任務信息 。業務組件對外提供獲取信息或者寫入信息的 Web 服務,和普通的業務組件之間的 Web 服務沒有什麼區別,讀取信息和寫入信息是標準的業務服務,保證了為工作流使用的 Web 服務具有通用性。如果需要和工作流整合,僅僅提供一個特殊的 Web 服務“通知完成”將任務的完成狀況或者任務的基本信息等傳遞到工作流組件,任務的基本信息主要是為了痕跡化管理,將修改的信息做一個記錄,便於未來的審計。通過這種模式實現業務數據和流程數據分離,工作流組件和業務組件不進行業務數據的交互,簡化了工作流整合的難度。工作流組件則提供啟動流程、修改流程狀態,啟動下一環節以及保存任務基本信息等 Web 服務。

 

為了使流程平臺具有良好的擴展性,如果工作流組件需要業務數據,比如需要根據業務數據進行判斷業務流轉,也是以 Web 服務的方式有業務組件提供一個標準的服務,通過 BPEL 實現,比如為了進行痕跡化,則需要對進行審批的內容進行保存,通過 BPLE 調用查詢服務將數據保存到流程資料庫中,其調用跟工作流引擎沒有關係。實現跨系統的流程流轉,也是通過 BPEL 的編排,通過調用業務 Web 服務實現。

 

工作流組件組成及和業務組件關係

 

作為公共組件的工作流模塊主要包含三個主要功能:工作流引擎、待辦任務管理、工作流可視化管理。工作流引擎是基礎模塊,可以為所有的系統提供工作流引擎,實現工作流流轉的邏輯控制;待辦任務管理主要實現人機交互,提供一個統一管理的待辦任務管理,整合公共的工作流引擎以及企業已經存在的工作流引擎(如 OA)以及普通業務系統的任務(如沒有工作流引擎的 ERP),形成一個統一的待辦任務管理;工作流可視化管理,主要用於工作流的可視化展示,用於除了用於工作流定義外,可以實現流程監控、業務績效指標監控、流程導航等功能。

 

SDP軟體快速開發平臺(從.net到java)
SDP 支持:(.NET、JAVE)平臺
相容:IE6、FireFox、Chrome、Safari、Opera

SDP軟體快速開發平臺適用對象:軟體開發商、最終用戶、程式開發員
各類軟體定製開發 APP/微信平臺/CRM/OA/ERP/MES/數據採集/教育教學系列/會員系列

 

特點
01)快速開發系統,直接生成代碼,節約人工,節約成本
02)可視化設計,操作簡單易用,更新、維護、部署操作簡單方便
03)支持多人多項目協同開發,提高協同工作效率
04)減少程式員代碼量,只需極少的JS代碼就能實現複雜業務功能
05)可以根據客戶需求、快速開發出DEMO版,尤其是在大型項目調研對接過程,針對文檔性資料不夠直觀,通過快速生成的DEMO版(其實就是後續正式的程式)讓用戶非常直觀的看到軟體項目最終的效果,對項目的調研起到事半功倍的效果,後續只要再次針對業務進行複雜業務邏輯的處理就可以完成項目的開發,基本上項目調研完成,軟體項目基本上定型開發就已經完成,效率和效果得到空前提高。
06)SDP節省開發成本,開發速度快,從而滿足企業快速發展變化而帶來的系統變化的需要。一般普通的剛畢業的程式員只要簡單培訓,就能開發出項目頁面,只需要會簡單的JS程式,就能很快完成業務單據的正常的保存、修改、 刪除、列表、輸出、查詢等功能;經過多次檢驗,一般一個稍微熟悉一點的開發人員一天基本上能開發幾十個業務表單及功能,效率得到空前提高;
07)SDP對開發人員要求不高,只需清楚企業管理需求,就可很快速將需求實現。 開發人員需懂一定SQL語法,一般一周即可培訓好。當然這隻是說針對普通的業務來說的,如果是非常複雜的業務邏輯更新,則還是需要技術高點的人 來寫DLL類庫來執行更新,所以公司可將開發人員技術等級劃分後,合理的分配任務,就能實現此目標。
08)SDP擴展性,適應性強,降低了企業重覆購買軟體的風險。 企業可在此平臺上開發各種系統,集成在一起,充分利用。
09)SDP設計器可以支持多個項目配置,針對不同的項目登錄時選擇不同配置即可進入不同系統,實現一套平臺操作多個應用。所有系統操作方法相同,每上一個新系統時無需重新培訓。
10)SDP實現每實施一個新系統或升級一個舊系統時,能快速部署更新,大大減輕了實施和維護人員的工作量。
11)SDP為開發人員開發好了大量基礎性模塊,開發人員無需重覆開發,如組織 管理、人事管理、個人事務、新聞管理、系統管理、許可權管理等。如需修 改,直接修改對應的文件就可以完成新的需求
12)SDP提供了郵件發送功能,只需在WEB端配置一下郵件伺服器就可以實現郵件發送;同時提供的內部消息和新聞通知功能基本滿足日常的需求。 13)SDP平臺開發生成的項目,是純HTML源碼文件,用戶可以輕鬆閱讀修改。(軟體項目是B/S架構)
14)通過可視化的頁面設計,輕鬆實現複雜業務頁面的功能設計
15)通過流程圖設計模塊,快速製作業務工作流。
16)通過報表設計工具,可以製作出符合邏輯的中國式複雜報表(包括圖表、列印、輸出等)

SDP開發平臺推出了V3.5版本,增加了JAVA版的項目開發功能,讓使用JAVA開發的公司也能使用上開發平臺。實現JAVA .NET 雙版本的格局。下一步我們將繼續努力推出手機APP的開發功能,最終實現 .NET JAVA APP 融合一體的綜合開發平臺。 


可視化流程設計及監控:涵蓋了從流程定義、發佈、管理配置、執行、監控到結果分析的完整的生命周期管理。

多層多級複雜許可權控制:複雜許可權控制,實現橫向、縱向數據許可權控制,可精確控制到頁面單元格元素控制項,全局統籌掌控易如反掌。

讓你的員工更高效的工作:適用於通用領域和特定領域的業務系統,實現框架重用、組件 重用、業務邏輯重用和程式員組裝動作重用。

高性能架構,強大的支撐體系:涵蓋了Web應用項目的基礎架構及通用功能,包括工作流引擎、報表引擎、組織架構、許可權管理、流程管控、任務管理。

源自多年運營經驗:ERP、供應鏈、人力資源、協同辦公、項目管理、設備管理跨系統整合等各種應用案例實戰保障。

中國式複雜報表分析:獨創的中國式報表,支持分組、交叉、條碼、主從、套打、分欄、 圖表混排等多種展現方式。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 對值類型和引用類型的誤解 (引用類型存儲在堆上,值類型存儲在棧上) 對值類型和引用類型的誤解 (引用類型存儲在堆上,值類型存儲在棧上) 在學習C#基礎篇幅的時候總是逃不掉值類型和引用類型,很多新手包括我以前對它的理解也只是停留在"引用類型存儲在堆上,值類型存儲在棧上". 這個誤區主要歸咎於我們根本沒 ...
  • 第 9 章:常用的設計模式 9.1 聚合組件 考慮為常用的特性域提供聚合組件。 要用聚合組件來對高層的概念(物理對象)進行建模,而不是對系統級的任務進行建模。 要讓聚合組件的名字與眾所周知的系統實體相對應,比如 MessageQueue、Process 或 EventLog,這樣就能使類型更加引人註 ...
  • 為什麼有這種需求, 原因是這樣的, 公司有一個Java的web項目,在另一臺伺服器A上,最近老闆一時興起,想把他合併到這台穩定點的伺服器B上,伺服器B上使用IIS來寄宿asp.net 網站, 怎麼辦呢,硬著頭皮上吧,在網上找各種解決方案: 解決方案一:isapi_redirect 這個方法按照方法試 ...
  • 在網路編程過程中需要向伺服器上傳文件。 Multipart/form-data是上傳文件的一種方式。 ...
  • 創建和開發ASP.NET Core應用可以有二種方式:最簡單的方式是通過visual studio 2017 來創建,其優點是簡單方便,但需要安裝最新版本visual studio 2017 preview 15.3 。另一種方式是使用visual studio code來創建,vscode 則是一... ...
  • 微信分享代碼,先引入: 獲取簽名: 分享代碼: wxsign輸出的json ...
  • 1、導出Excel : 首先引用NPOI包(Action一定要用FileResult) /// <summary> /// 批量導出需要導出的列表 /// </summary> /// <returns></returns> public FileResult ExportStu2() { //獲取 ...
  • ASP.NET Core 是新一代的 ASP.NET,第一次出現時代號為 ASP.NET vNext,後來命名為ASP.NET 5,隨著它的完善與成熟,最終命名為 ASP.NET Core,表明它不是 ASP.NET 的升級,而是一個重新設計的Web開發框架。而它一個非常重要的變化就是它不再依賴於I ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...