日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

Java開(kāi)源工作流對(duì)比

 jackeyqing 2019-07-13

Java開(kāi)源工作流對(duì)比

工作流(Workflow)

1、業(yè)務(wù)過(guò)程的部分或整體在計(jì)算機(jī)應(yīng)用環(huán)境下的自動(dòng)化;

2、是對(duì)工作流程及其各步驟之間業(yè)務(wù)規(guī)則的抽象、概括描述;

3、工作流主要解決的問(wèn)題是:為了實(shí)現(xiàn)某個(gè)業(yè)務(wù)目標(biāo),利用計(jì)算機(jī)在多個(gè)參與者之間按某種預(yù)定規(guī)則自動(dòng)傳遞文檔、信息或者任務(wù);

4、工作流的概念起源于生產(chǎn)組織和辦公自動(dòng)化領(lǐng)域,是針對(duì)日常工作中具有固定程序活動(dòng)而提出的一個(gè)概念;目的是通過(guò)將工作分解成定義良好的任務(wù)或角色,按照一定規(guī)則和過(guò)程來(lái)執(zhí)行這些任務(wù)并對(duì)其進(jìn)行監(jiān)控;達(dá)到提高工作效率、更好的控制過(guò)程、增強(qiáng)對(duì)客戶的服務(wù)、有效管理業(yè)務(wù)流程等目的;

5、Georgakopoulos給出的工作流定義是:工作流是將一組任務(wù)組織起來(lái)一完成某個(gè)經(jīng)營(yíng)過(guò)程:定義了任務(wù)的出發(fā)順序和觸發(fā)條件,每個(gè)任務(wù)可以由一個(gè)或多個(gè)軟件系統(tǒng)完成,也可以由一個(gè)或一組人完成,還可以由一個(gè)或多個(gè)人與系統(tǒng)軟件協(xié)作完成;

6、工作流的特點(diǎn):(1)極大地提高了工作效率;(2)本身只是業(yè)務(wù)邏輯決定的一個(gè)事務(wù)流程;(3)一旦啟動(dòng),自動(dòng)流轉(zhuǎn);(4)具有事務(wù)的特征;(5)流程節(jié)點(diǎn)靈活可配;(6)符合面向?qū)ο蟮乃枷?/span>

7、工作流的分類:(1)順序工作流;(2)流程圖工作流;(3)狀態(tài)機(jī)工作流

8、工作流就是:在一個(gè)工作群組中,為了達(dá)成某一個(gè)共同目的而需要多人協(xié)力以循序或平行工作的形式來(lái)共同完成的任務(wù)

關(guān)于工作流的幾個(gè)名詞解釋:

任務(wù)

泛指各種事務(wù)上所必需執(zhí)行的流程性工作

循序或平行工作

工作的流動(dòng)性是一個(gè)人接著一個(gè)人執(zhí)行,或同時(shí)由多個(gè)人分開(kāi)執(zhí)行,或是上述兩類工作合并之后的混合型工作

多人

若是單人就可以完成的工作,則不能歸類為流程工作;凡是一件工作必須由兩個(gè)人或更多人來(lái)協(xié)力完成的工作才能稱之為流程工作;

共同目的

多人參與的流程性工作,必須是以完成共同目的為前提;如果一群人是分別針對(duì)不同的專案來(lái)執(zhí)行個(gè)別的工作,并不算構(gòu)成一個(gè)工作流程;

9、 鏈接:   從程序員的角度來(lái)看為什么我們需要工作流

10、 鏈接:   工作流簡(jiǎn)介及其6種常用的工作流引擎

J2EE常用工作流比較

引用鏈接

Shark(EnhydraShark)

Osworkflow opensymphony

JBPM(JBoss JBPM)

Java Business Process Management

工作流描述語(yǔ)言

XPDL:WFMC制定的描述業(yè)務(wù)流程控制流的XML格式規(guī)范,格式復(fù)雜,與具體語(yǔ)言無(wú)關(guān),不靈活

1、XML:流程定義格式簡(jiǎn)單,使用靈活

2、基于有限狀態(tài)機(jī)模型

1、JPdl:JBoss jBPM Processdefinition language,一個(gè)商務(wù)流程被看作是一個(gè)UML狀態(tài)圖。

2、基于UML的狀態(tài)圖和活動(dòng)圖來(lái)定義流程,已加入JBOSS大家庭,市場(chǎng)前景看好。

是否開(kāi)源,開(kāi)源協(xié)議

一個(gè)可擴(kuò)展的工作流引擎框架?,F(xiàn)在不再開(kāi)源,用于商業(yè)用途

開(kāi)源的嵌入式工作流引擎 ,它的使用遵循 Apache License

一種基于J2EE的輕量級(jí)工作流管理系統(tǒng),它的使用遵循 Apache License

相關(guān)開(kāi)源項(xiàng)目

Jawe

Osworkflow for .net


支持是否全面

流程定制工具JAWE

1、帶有一個(gè)簡(jiǎn)陋的流程定制工具,但十分簡(jiǎn)陋且常有錯(cuò)誤 

2、需要專業(yè)技術(shù)用戶使用

1、Jbpm3的圖形化流程定義嵌入到j(luò)bosseclipse IDE

2、流程定制方式更接近用戶的理解

拓展性

體系和功能最為復(fù)雜,秉承“模塊化”的思想,比較容易擴(kuò)展

有良好的擴(kuò)展性,絕對(duì)的靈活(同時(shí)也增加了開(kāi)發(fā)者的工作量,需要自己寫(xiě)一些必要的函數(shù))

最適宜擴(kuò)展(Jbpm的過(guò)程模式支持是比較固定的,但是其對(duì)任務(wù)的中action擴(kuò)展是很的靈活)最適宜被商業(yè)化應(yīng)用

持久化

Shark的持久層采用DODS來(lái)實(shí)現(xiàn)

1、它提供的持久化API:EJB,Hibernate,JDBC等 

2、Osworkflow 可以與Spring集成。

利用hibernate持久化

小結(jié)

      Shark是體系和功能最為復(fù)雜的代表。它是一款遵循WfMC的XPDL標(biāo)準(zhǔn)開(kāi)源工作流引擎,并且同時(shí)遵循OMG組織的WorkflowManagement Facility規(guī)范。XPDL的兩個(gè)最重要的概念是Process和Activity。XPDL中的Activity是基于UML1.x中的活動(dòng)圖的概念?;顒?dòng)圖天生的適于工作流程建模,它相對(duì)于狀態(tài)圖的一個(gè)最大的優(yōu)點(diǎn)是容易做并發(fā)線程的分叉控制,這些并發(fā)線程可以同時(shí)執(zhí)行也可以順序執(zhí)行;它還有一個(gè)優(yōu)點(diǎn)是有泳道的概念,可以控制工作流引擎中的任務(wù)的產(chǎn)生。

    在所有開(kāi)源工作流引擎中,Shark的體系最為完備和復(fù)雜。其一直秉承著“模塊化”的思想,所以比較容易擴(kuò)展。但是自從被Together公司收購(gòu)后,Shark的商業(yè)化色彩已經(jīng)越來(lái)越濃,改稱為Together Workflow Server,并僅以Community Edition的形式提供了部分開(kāi)源代碼供參考。

     OSWorkflow是最輕量型的代表,也是一款非常靈活和低級(jí)別定位的工作流引擎的實(shí)現(xiàn)框架。低級(jí)別定位的意思是說(shuō),它不是定位在解決流程模型對(duì)象和運(yùn)轉(zhuǎn)場(chǎng)景,而是提供一套可維護(hù)調(diào)度的機(jī)制,供開(kāi)發(fā)人員自主擴(kuò)展。這個(gè)維護(hù)流程調(diào)度機(jī)制OSWorkflow選擇的是基于行為(Action)的FSM理論,所以OSWorkflow更像是一個(gè)復(fù)雜而靈活的有限狀態(tài)調(diào)度機(jī)。

    Osworkflow有個(gè)重要概念是State,State是由step和status聯(lián)合表達(dá)的,一個(gè)State就是一個(gè)step中的某個(gè)status;而state的轉(zhuǎn)換由action來(lái)驅(qū)動(dòng),類似狀態(tài)圖中的event,因?yàn)橐粋€(gè)event對(duì)應(yīng)一個(gè)action

    OSWorkflow在國(guó)內(nèi)項(xiàng)目應(yīng)用得較多,很多國(guó)內(nèi)的簡(jiǎn)易審批流程項(xiàng)目都是基于其引擎二次開(kāi)發(fā)而來(lái)。這主要是由于OSWorkflow是基于Action驅(qū)動(dòng)的,而國(guó)內(nèi)的客戶也很容易接受這樣的操作習(xí)慣。但OSWorkflow所依賴的FSM模型對(duì)于分支、聚合、子流程的支持度很低,這一點(diǎn)在實(shí)施過(guò)程中需要注意。

     Jbpm結(jié)合應(yīng)用了狀態(tài)圖+活動(dòng)圖+PetriNet的知識(shí),而且這里的活動(dòng)圖還是UML2.0版的。UML2.0的活動(dòng)圖中,節(jié)點(diǎn)不叫活動(dòng)(Activity)而叫動(dòng)作(action),活動(dòng)成了一個(gè)高層次的概念,它包含一個(gè)動(dòng)作序列。一個(gè)活動(dòng)圖展現(xiàn)一系列的動(dòng)作,這些動(dòng)作組成了活動(dòng)。Jbpm把a(bǔ)ction也改名了,稱為state。Jbpm使用的狀態(tài)圖的概念有transition/event等。Jbpm來(lái)內(nèi)部實(shí)現(xiàn)中還采用了PetriNet的概念,如token,signal等,jBpm對(duì)Token的應(yīng)用很有特色,巧妙地利用Parent-Child Token的機(jī)制處理分支、父子流程等復(fù)雜應(yīng)用場(chǎng)景。

    jBpm是最適合擴(kuò)展的代表,是在所有開(kāi)源引擎中最適宜被商業(yè)化應(yīng)用的一款。首先其流程建模模型是基于Activity Diagram(活動(dòng)圖)的,并在引擎構(gòu)建上融入了FSM和PetriNet思想,所以其內(nèi)核和根基比較牢固扎實(shí)。其次,自從被JBoss收購(gòu)后,其3.x系列的結(jié)構(gòu)更加趨于微內(nèi)核,Plug-in思想也更加深入。其同時(shí)還提供了對(duì)BPEL擴(kuò)展,存儲(chǔ)支持JBossHibernate實(shí)現(xiàn),集成了JBoss seam,規(guī)則引擎準(zhǔn)備采用JBossrules,并準(zhǔn)備集成JBoss Messaging。這樣,不論從內(nèi)核和外圍應(yīng)用,jBpm都具有了強(qiáng)勁的動(dòng)力。

OSWorkFlowJBPM開(kāi)發(fā)工作流異同

引用鏈接

JPBM

OSWorkFlow

編寫(xiě)流程描述文件方式

      BPM是通過(guò)圖形化的編輯工具(JBPM自帶的Eclipse插件)來(lái)編寫(xiě)業(yè)務(wù)流程如開(kāi)始狀態(tài),結(jié)束狀態(tài),以及狀態(tài)之間的轉(zhuǎn)換,之后會(huì)自動(dòng)生成XML文件,但具體每一步相關(guān)的細(xì)節(jié)操作還是要手工配置(如該節(jié)點(diǎn)是屬于什么類型節(jié)點(diǎn),相關(guān)的函數(shù),要不要較驗(yàn))。

      OSWorkFlow則要通過(guò)手工寫(xiě)XML文件來(lái)定義流程文件,而且它涉及的標(biāo)簽元素比較多,其用戶手冊(cè)上也建議實(shí)施人員不要去修改流程,否則流程很容易破壞。

工作流信息保存方式

      JBPM是將流程信息直接保存到數(shù)據(jù)庫(kù),可以用任何方式對(duì)數(shù)據(jù)庫(kù)的操作,這樣就要引入保存工作流信息的相關(guān)表。

      OSWorkFlow是既可以保存在XML文件里,也可以保存在數(shù)據(jù)庫(kù)中,保存在數(shù)據(jù)庫(kù)中時(shí)需要配置propertySet.xml文件,比較復(fù)雜,而且它不是完全支持hibernate(如引入osuser來(lái)作權(quán)限分析時(shí)),此時(shí)要自定義操作數(shù)據(jù)庫(kù)的方式。

與系統(tǒng)集成

      JBPM集成比較容易,加入Spring支持包spring-modules-jbpm31.jar,該包加入了Spring對(duì)JBPM的包裝,所有的集成都是在此包基礎(chǔ)之上。之后還要配置sessionFactoryForJbpm ,jbpmConfiguration,jbpmTemplate, jbpmDao。

      OSWorkFlow跟Spring集成須要如下所需組件:

    1)SpringHibernateWorkflowStore,讓工作流程實(shí)例(如果需要的話)分享當(dāng)前事務(wù)。      2) SpringTypeResolver,允許 OSWorkflow 從 Spring ApplicationContext中獲得業(yè)務(wù)邏輯組件(conditions, functions等等)。      3)SpringConfiguration, 這是一個(gè) Workflow Configuration 接口的實(shí)現(xiàn)類, 它包含指向 store和 factory的引用,這樣可以在 spring 中注射或者連接。      4) SpringWorkflowFactory,這是一個(gè) XMLWorkflowFactory 封裝包,它可以允許從容器中注入 configuration,從而不再?gòu)钠渌?nbsp;XML 配置文件中讀取它們。

    如果OSWorkFlow引入osuser.xml來(lái)設(shè)置權(quán)限,則不支持Hibernate3,因?yàn)閛suser是比較獨(dú)立的模塊,目前還沒(méi)有支持hibernate3,所以跟Spring集成時(shí)要修改配置文件applicationContext-hibernate3.xml

重點(diǎn)難點(diǎn)

      JPDL語(yǔ)言的學(xué)習(xí),主要是用來(lái)編寫(xiě)流程文件;理解3個(gè)接口:動(dòng)作處理接口(提供影響流程執(zhí)行的方法,在event和action元素中被回調(diào)),判定處理接口(用在decision判定節(jié)點(diǎn)中,提供方法來(lái)判定節(jié)點(diǎn)的轉(zhuǎn)向),委派處理接口(用在task的委派子元素assignment中,用來(lái)指定將任務(wù)分配給指定的人員或角色)。

      工作流文件定義的元素,主要用來(lái)編寫(xiě)工作流;OSWorkFlow.xml及propertySet.xml文件的配置;InputMap接口、Workflow 接口及WorkflowDescriptor接口。

開(kāi)發(fā)步驟

      通過(guò)圖形編輯工具編寫(xiě)業(yè)務(wù)流程――>生成xml流程文件――>修改流程文件(判斷節(jié)點(diǎn)是任務(wù)節(jié)點(diǎn)、普通節(jié)點(diǎn)還是判定節(jié)點(diǎn),之后作相應(yīng)修改)――>導(dǎo)入保存流程信息的數(shù)據(jù)庫(kù)表――>部署流程定義文件(將流程文件中的內(nèi)容放到數(shù)據(jù)庫(kù)中)――>創(chuàng)建流程實(shí)例――>調(diào)用JBPM提供的signal方法執(zhí)行流程流轉(zhuǎn)

      手工編寫(xiě)工作流文件——>配置OSWorkflow.xml――>配置WorkStore——>配置propertySet.xml,osUser.xml文件(如果需要用戶權(quán)限)――>調(diào)用AbatractWorkflow類加載OSWorkflow.xml(它會(huì)自動(dòng)加載工作流文件及數(shù)據(jù)庫(kù)配置文件)――>調(diào)用WorkFlow接口方法(initial()方法,transitionWorkflow()方法,doAction()方法)

流轉(zhuǎn)方法

      先確定節(jié)點(diǎn)是什么節(jié)點(diǎn),如果是普通的Node節(jié)點(diǎn),則是流程執(zhí)行到此節(jié)點(diǎn)不會(huì)中斷,繼續(xù)執(zhí)行;如果是state節(jié)點(diǎn),則流程執(zhí)行到此節(jié)點(diǎn)會(huì)中斷,直到系統(tǒng)外的參與者發(fā)會(huì)命令才能繼續(xù)執(zhí)行,即調(diào)用signal()或end()方法;如果節(jié)點(diǎn)是Task-node,則會(huì)根據(jù)task任務(wù)列表的任務(wù)有沒(méi)全部執(zhí)行完來(lái)決定流轉(zhuǎn)。

      一個(gè)工作流包含多個(gè)步驟。每一個(gè)步驟都有一個(gè)當(dāng)前狀態(tài)(例如, Queued, Underway, or Finished)。每一個(gè)步驟中都有一個(gè)或者多個(gè)動(dòng)作可以被執(zhí)行。每一個(gè)動(dòng)作都可以設(shè)置執(zhí)行條件(condition),也可以設(shè)置執(zhí)行函數(shù)(pre-function or post-function)。動(dòng)作產(chǎn)生結(jié)果(result),導(dǎo)致工作流的狀態(tài)和當(dāng)前步驟發(fā)生改變

流程定義文件主要元素

      一個(gè)JBPM的流程定義XML文件中包含一個(gè)< process-definition>元素,而一個(gè)< process-definition>元素又包含零個(gè)或一個(gè)< description>元素,零個(gè)或多個(gè)的< swimlane>元素,一個(gè)< start-state>元素,零個(gè)或多個(gè)的< state>元素或< decision>元素或< fork>元素或< join>元素,以及零個(gè)或多個(gè)的< action>元素,零個(gè)或多個(gè)<task-node>和<node>元素,一個(gè)< end-state>元素等等。此外,< process definition>元素有一個(gè)標(biāo)示符,以“name”屬性來(lái)表示,這個(gè)屬性必須存在,用來(lái)表示該流程的名稱。

步驟(step)、條件(conditions)、循環(huán)(loops)、分支(spilts)、合并(joins)、角色(roles)、函數(shù)(function)

其他

      JBPM的Scheduler可以實(shí)現(xiàn)在JBPM流程中定時(shí)觸發(fā)某一動(dòng)作。在流程中JPBM提供了timer節(jié)點(diǎn)供我們使用,通過(guò)這個(gè)節(jié)點(diǎn)我們可以實(shí)現(xiàn)節(jié)點(diǎn)動(dòng)作的定時(shí)觸發(fā)。


深入了解jBPM5Activiti之間的差異對(duì)比

引用鏈接

Activiti

JBPM5

相似之處

1、都是BPMN2過(guò)程建模和執(zhí)行環(huán)境。

2、都是BPM系統(tǒng)(符合BPM規(guī)范)。

3、都是開(kāi)源項(xiàng)目-遵循ASL協(xié)議( Apache的 軟件許可)。

4、都源自JBoss(Activiti5是jBPM4的衍生,jBPM5則基于Drools Flow)。 

5、都很成熟,從無(wú)到有,雙方開(kāi)始約始于2年半前。 都有對(duì)人工任務(wù)的生命周期管理。 

6、Activiti5和jBPM5唯一的區(qū)別是jBPM5基于WebService - HumanTask標(biāo)準(zhǔn)來(lái)描述人工任務(wù)和管理生命周期。 如有興趣了解這方面的標(biāo)準(zhǔn)及其優(yōu)點(diǎn),可參閱WS - HT規(guī)范介紹 。

7、 都使用了不同風(fēng)格的 Oryx 流程編輯器對(duì)BPMN2建模。 jBPM5采用的是 Intalio 維護(hù)的開(kāi)源項(xiàng)目分支。 Activiti5則使用了Signavio維護(hù)的分支。

數(shù)據(jù)庫(kù)持久層ORM

MyBatis3

Hibernate3

持久化標(biāo)準(zhǔn)

無(wú)

JPA規(guī)范

事務(wù)管理

MyBatis機(jī)制/Spring事務(wù)控制

Bitronix,基于JTA事務(wù)管理

數(shù)據(jù)庫(kù)連接方式

Jdbc/DataSource

Jdbc/DataSource

支持?jǐn)?shù)據(jù)庫(kù)

Oracle、SQL Server、MySQL等多數(shù)數(shù)據(jù)庫(kù)

Oracle、SQL Server、MySQL等多數(shù)數(shù)據(jù)庫(kù)

設(shè)計(jì)模式

Command模式、觀察者模式等


內(nèi)部服務(wù)通訊

Service間通過(guò)API調(diào)用

基于Apache Mina異步通訊

集成接口

SOAP、Mule、RESTful

消息通訊

支持的流程格式

BPMN2、xPDL、jPDL等

目前僅只支持BPMN2 xml

引擎核心

PVM(流程虛擬機(jī))

Drools

技術(shù)前身

jBPM3、jBPM4

Drools Flow

所屬公司

Alfresco

jBoss.org

集成

      Activiti5使用Spring進(jìn)行引擎配置以及各個(gè)Bean的管理,綜合使用IoC和AOP技術(shù),使用CXF作為Web Services實(shí)現(xiàn)的基礎(chǔ),使用MyBatis進(jìn)行底層數(shù)據(jù)庫(kù)ORM的管理,預(yù)先提供Bundle化包能較容易的與OSGi進(jìn)行集成,通過(guò)與Mule ESB的集成和對(duì)外部服務(wù)(Web Service、RESTful等)的接口可以構(gòu)建全面的SOA應(yīng)用;

      jBPM5使用jBoss.org社區(qū)的大多數(shù)組件,以Drools Flow為核心組件作為流程引擎的核心構(gòu)成,以Hibernate作為數(shù)據(jù)持久化ORM實(shí)現(xiàn),采用基于JPA/JTA的可插拔的持久化和事務(wù)控制規(guī)范,使用Guvnor作為流程管理倉(cāng)庫(kù),能夠與Seam、Spring、OSGi等集成。

優(yōu)劣對(duì)比

      從技術(shù)組成來(lái)看,Activiti最大的優(yōu)勢(shì)是采用了PVM(流程虛擬機(jī)),支持除了BPMN2.0規(guī)范之外的流程格式,與外部服務(wù)有良好的集成能力,延續(xù)了jBPM3、jBPM4良好的社區(qū)支持,服務(wù)接口清晰,鏈?zhǔn)紸PI更為優(yōu)雅;Activiti上手比較快,界面也比較簡(jiǎn)潔、直觀

      劣勢(shì)是持久化層沒(méi)有遵循JPA規(guī)范。

      jBPM最大的優(yōu)勢(shì)是采用了Apache Mina異步通信技術(shù),采用JPA/JTA持久化方面的標(biāo)準(zhǔn),以功能齊全的Guvnor作為流程倉(cāng)庫(kù),有RedHat(jBoss.org被紅帽收購(gòu))的專業(yè)化支持;

      但其劣勢(shì)也很明顯,對(duì)自身技術(shù)依賴過(guò)緊且目前僅支持BPMN2。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多