面向服務的體系結構(SOA)——(3)關於BPM

什麼是BPM

不少狀況下企業當中所提供的服務不是由一個分佈式業務流程就能夠完成的,整個服務的提供須要多個分佈式流程有機的組合,因而BPM就應運而生了。要將現有的服務經過配置、編排(關於配置與編排的區別後面將說明)以知足具體的業務流程的目的就不得不借助於工做流的相關內容。畢竟各個服務之間的配合是爲了提供一項合理的業務流程,這樣的話就必需要設計流程,說白了就是各個服務誰先誰後的問題。分佈式

從字面上理解BPM所要作的就是對整個業務流程進行管理。這其中包括不少方面,好比分析業務、實現業務功能、檢測業務流程、創建相應的操做流程的工具等等。在真正開始動手以前一般要作的將業務分解成已有的底層服務能夠處理的小模塊。工具

實施思路

流程分解後最底層的一個個活動就是服務。服務是業務流程的組成部分。要想讓服務發揮做用就必須先考慮業務流程。從業務流程的觀點來看,這些個服務是基本服務仍是組合服務可有可無,重要的是服務之星了必要的業務功能。然而流程服務是不一樣的東西,由於流程服務的目的是體現整個業務流程(或某個部分)。spa

能夠經過自頂向上的方法將一個問題、系統或流程不斷分解爲更小的內容,直到抵達服務的層次。或者採用自底向上的方式依靠底層的服務組合爲更通用的塊來創建業務流程。固然方法不是惟一的,只是提供一個參考而已。每種方法都有利弊。自底向上會產生沒必要要的服務或者產生知足不了業務需求的服務。而自頂向下極可能遇到技術上的困難,或實現上覆雜的服務。設計

例如:若是要實現一個新的業務流程。這個業務流程就是頂層咱們須要實現的流程,而既存的系統或者說服務就是這個業務流程的底層,毋庸置疑底層是負責提供一些用服務方式體現的基本業務功能。下面的工做就是採用自頂向下的方式把整個流程分解成爲小塊,把複雜的流程分解爲下層服務能夠處理的小模塊。orm

具體技術----BPM工具和引擎

通常具體到實現到流程上就是有關工做流的層面的事情了。再具體一點說的話就是須要使用BPEL將整個流程描述出來。BPEL是一個抽象的概念,具體根據不一樣的流程引擎會有不一樣的表現形式。好比使用JBPM的時候那麼擔當描述部分的就是JBPM自身的所提供的JPDL,當使用普元的BPS平臺的時候擔當描述部分的將是普元自帶的描述流程的語言。不過實現的方式是相似的:將流程節點與現有的服務綁定,最終發佈定義,啓動流程,執行流程等等。核心思想都是將現有的服務利用起來經過編排或配置產生新的符合需求的新服務。經過業務流程建模工具或引擎能夠用來從現有的服務中組合(「配置」)出新的組合服務或流程服務。blog

JBPM僅僅是BPM的實現方式之一,因此以前若是對JBPM有所瞭解的話將有助於理解及使用BPM。和JBPM相似,BPM的要作的就是將複雜的業務劃分爲一個個簡單的服務,而後分清哪些是必需要人蔘與的那些是能夠藉助IT自動完成的,隨後配置和編排。當流程定製完成那麼就能夠開始執行整個的業務了。固然這其中須要一箇中央控制者來協調全部活動。工作流

 「配置」與「編排」

經過組合現有的服務來設計更高層次的服務和流程這個方法叫作「配置」。在配置的過程當中一般有一箇中央控制者協調流程的全部活動。整個的組合自己能夠看成服務使用。io

另外一個方法是「編排」,沒有誰服從於誰的概念,每一個部分負責一個或多個流程中的步驟,處於流程之中的時候很難了解整個流程的全貌。「編排」因爲沒有中央控制器的約束因此更容易伸縮,可是沒有管理者的一大弊端就是出現問題不知道該如何去處理。class

其餘細節問題

BPMSOA的關係中還有不少是須要考慮的細節,相似JBPM集成到單個系統中同樣。須要考慮角色與組織和BPM的關係,須要涉及到權限相關的內容,或者說是系統前臺和後臺的問題。這些問題將在後面的文章中具體描述。後臺

相關文章
相關標籤/搜索