工(gōng)作流(work flow)就是工(gōng)作流程的計算模型,即将工(gōng)作流程中(zhōng)的工(gōng)作如何前後組織在一(yī)起的邏輯和規則在計算機中(zhōng)以恰當的模型進行表示并對其實施計算。工(gōng)作流要解決的主要問題是:爲實現某個業務目标,在多個參與者之間,利用計算機,按某種預定規則自動傳遞文檔、信息或者任務。簡單地說,工(gōng)作流就是一(yī)系列相互銜接、自動進行的業務活動或任務。我(wǒ)們可以将整個業務過程看作是一(yī)條河,其中(zhōng)流過的河水就是工(gōng)作流。
工(gōng)作流屬于計算機支持的協同工(gōng)作(computer supported cooperativework,cscw)的一(yī)部分(fēn)。後者是普遍地研究一(yī)個群體(tǐ)如何在計算機的幫助下(xià)實現協同工(gōng)作的。工(gōng)作流的目的就是在合适的時間,特定的條件下(xià)執行既定的活動,爲了實現這個目标,首先解決活動數據在計算機是如何被組織的,用什麽方式來存儲,以及該活動數據是如何産生(shēng)的,将來要如何被處理;爲了實現合适的時間,工(gōng)作流系統需要有定時、計時、計數模塊;爲了實現條件判定,需要工(gōng)作流系統支持符号處理能力;爲了執行活動,需要工(gōng)作流系統能區分(fēn)人工(gōng)活動,自動活動區别,以及在人工(gōng)活動中(zhōng)如何自動生(shēng)成表單,在自動活動中(zhōng)能高效的執行動态加載的類,以及外(wài)部程序的調用。
有興趣的可以看看sdp開(kāi)發平台的工(gōng)作流引擎,
camunda是一(yī)個基于java的框架,支持用于工(gōng)作流和流程自動化的bpmn、用于案例管理的cmmn和用于業務決策管理的dmn。
本篇文章我(wǒ)們僅考慮bpmn流程引擎,先不涉及cmmn和dmn引擎。就流程引擎而言,camunda是一(yī)個靈活的工(gōng)作流框架,它的核心是一(yī)個在java虛拟機内部運行的原生(shēng)bpmn 2.0流程引擎,因此它可以嵌入到任何java應用程序或運行時容器中(zhōng)。camunda與java ee 集成,并可以與spring framework和spring boot完美匹配。
camunda bpms到底包括哪些功能,我(wǒ)們拿官方的一(yī)張架構圖進行解讀分(fēn)析。
1.從bpm應用維度看
camunda分(fēn)爲流程設計和流程運行兩個階段,見圖中(zhōng)最下(xià)方的藍(lán)色大(dà)箭頭,model和execute,按照這兩個階段,camunda劃分(fēn)爲兩大(dà)部分(fēn)功能,對應設計階段的功能有 modeler,對應運行階段的功能有engine、tasklist、cockpit、admin。
2.從bpm功能維度看
camunda包括了流程設計器(modeler)、流程引擎(engine)、api接口(rest/java api)、任務列表(tasklist)、流程管理控制台(cockpit)、系統管理工(gōng)具(admin)。在camunda商(shāng)業産品中(zhōng)還包括了流程監控預警工(gōng)具(optimize)、流程協同設計工(gōng)具(cawemo)。這裏重點先說一(yī)下(xià)camunda流程設計器,支持兩種模式,一(yī)種是富客戶端的流程建模工(gōng)具camunda modeler,需要在客戶端安裝;另一(yī)種是基于浏覽器的流程設計器bpmn.io,這兩款軟件均開(kāi)源。
3.從bpm角色維度看
camunda分(fēn)爲業務分(fēn)析師、流程開(kāi)發工(gōng)程師、最終用戶、流程管理員(yuán)、系統管理員(yuán)這幾個角色,每個角色對應bpms不同的功能。業務分(fēn)析師、流程開(kāi)發工(gōng)程師使用流程設計器(modeler)進行流程建模,最終用戶使用任務列表(tasklist)進行流程發起和審批,流程管理員(yuán)使用流程管理控制台(cockpit)進行流程管理,比如流程暫停恢複、流程異常幹預等,系統管理員(yuán)使用系統管理工(gōng)具(admin)進行系統管理,比如組織用戶管理、權限管理等。
1.支持與spring框架集成
camunda支持與spring框架集成,把 camunda-engine-spring框架引入到項目的maven模塊内,它可以與spring 3、4或5版本一(yī)起使用,具體(tǐ)集成過程後面有文章單獨介紹。
2.支持與spring boot集成
後面文章專題介紹
3.支持與cdi and java ee 集成
cdi (context and dependency injection)是 java ee6的标準和依賴注入,camunda通過camunda-engine-cdi模塊集成可利用camunda引擎的配置和cdi的可擴展性。
4.支持與runtime container 集成
支持與tomcat、jboss等常見的運行容器集成。
camunda bpm是一(yī)個靈活的框架,支持嵌入式、分(fēn)布式、集群等多種部署模式。
1.嵌入式部署
流程引擎以jar包方式添加到應用程序中(zhōng),通過這種方式,可以在應用程序生(shēng)命周期中(zhōng)輕松啓動和停止流程引擎。
2.基于web容器啓動,多應用共享
流程引擎在運行時容器(servlet容器、應用程序服務器等)中(zhōng)啓動,流程引擎作爲容器服務提供,可以由容器内部署的所有應用程序共享。這種方式在實際應用場景中(zhōng)不多見。
3.獨立部署,多應用共享
在這種情況下(xià),流程引擎獨立部署,通過網絡提供服務,網絡上運行的不同應用程序可以通過遠程通信通道與進程引擎交互,遠程訪問流程引擎的最簡單方法是使用内置的rest服務接口。在企業級流程中(zhōng)心部署架構中(zhōng),這是一(yī)種最常見的部署模式,在現在的微服務部署架構中(zhōng),也可以采取這種方式。
4.集群部署
爲了提供擴展或故障轉移功能,流程引擎可以分(fēn)布到集群中(zhōng)的不同節點,每個流程引擎實例都必須連接到共享數據庫。camunda bpm不提供現成的負載平衡功能,可以采用nginx等第三方負載均衡軟件實現。
本文介紹了第三方庫及其在camunda中(zhōng)的使用。對于camunda的每個組件,都列出了第三方庫。對于每個庫,都解釋了該庫是必需的依賴項還是可選的依賴項。必需的依賴是camunda提供核心功能所依賴的庫。在下(xià)面的列表中(zhōng)标記爲(required dependency)。可選的依賴項是可以與camunda集成的庫。在下(xià)面的列表中(zhōng)标記爲(可選依賴項)。
以下(xià)是camunda7.15版本依賴得第三方類庫:
1、process engine
流程引擎依賴于以下(xià)第三方類庫:
mybatis mapping framework (required dependency) for object-relational mapping.
joda time (required dependency) for parsing date formats.
java uuid generator (jug) (optional dependency) id generator. see the documentation on id-generators
slf4j (required dependency) logging facade
此外(wài),流程引擎還可以集成:
apache commons email (optional dependency) for mail task support.
spring framework spring-beans (optional dependency) for configuration using camunda.cfg.xml.
spring framework spring-core (optional dependency) for configuration using camunda.cfg.xml.
spring framework spring-asm (optional dependency) for configuration using camunda.cfg.xml.
groovy (optional dependency) for groovy script task support.
jython (optional dependency) for python script task support.
jruby (optional dependency) for ruby script task support.
freemarker (optional dependency) for freemarker template engine support.
apache velocity (optional dependency) for apache velocity template engine support.
saxon (optional dependency) for xslt and xquery template engine support.
2、rest api
rest api依賴于以下(xià)第三方庫:
jackson jax-rs (required dependency) provider for json content type
apache commons fileupload (required dependency)
此外(wài),當使用apache tomcat時:
resteasy (required dependency)
3、spring support
spring支持可以與以下(xià)第三方庫集成:
apache commons dbcp (optional dependency)
spring framework spring-beans (optional dependency)
spring framework spring-core (optional dependency)
spring framework spring-asm (optional dependency)
spring framework spring-context (optional dependency)
spring framework spring-jdbc (optional dependency)
spring framework spring-orm (optional dependency)
spring framework spring-tx (optional dependency)
4、camunda spin
camunda spin依賴于以下(xià)第三方庫:
jackson json (required dependency) for json dataformat support
此外(wài),camunda spin可以與以下(xià)庫集成:
jayway json path (optional dependency) for json path support
5、camunda connect
camunda connect依賴于以下(xià)第三方庫:
apache http components (required dependency) for rest and soap support.
1、支持的java開(kāi)發環境
• java版本: 8 / 9 / 10 / 11 / 12 / 13 / 14
• springboot版本: 2.3.x.release
2、支持的java運行環境
• oracle jdk 8 / 9 / 10 / 11 / 12 / 13 / 14
• ibm jdk 8 (with j9 jvm)
• openjdk 8 / 9 / 10 / 11 / 12 / 13 / 14
3、支持的數據庫軟件
• mysql 5.6 / 5.7
• mariadb 10.0 / 10.2 / 10.3
• oracle 11g / 12c / 18c / 19c
• ibm db2 10.5 / 11.1
• postgresql 9.4 / 9.6 / 10.4 / 10.7 / 11.1 / 11.2 / 12.2
• microsoft sql server 2012/2014/2016/2017
• h2 1.4
4、支持的應用服務器
• apache tomcat 7.0 / 8.0 / 9.0
• jboss eap 6.4 / 7.0 / 7.1 / 7.2
• wildfly application server 10.1+
• ibm websphere application server 8.5 / 9.0 企業版
• oracle weblogic server 12c (12r2) 企業版
5、支持的浏覽器
• google chrome
• mozilla firefox
• microsoft edge
6、流程設計器支持的操作系統
• windows 7 / 10
• mac os x 10.11
• ubuntu lts
工(gōng)作流(workflow)就是工(gōng)作流程的計算模型,即将工(gōng)作流程中(zhōng)的工(gōng)作如何前後組織在一(yī)起的邏輯和規則在計算機中(zhōng)以恰當的模型進行表示并對其實施計算。工(gōng)作流要解決的主要問題是:爲實現某個業務目标,在多個參與者之間,利用計算機,按某種預定規則自動傳遞文檔、信息或者任務。
工(gōng)作流管理系統(workflow management system, wfms)的主要功能是通過計算機技術的支持去(qù)定義、執行和管理工(gōng)作流,協調工(gōng)作流執行過程中(zhōng)工(gōng)作之間以及群體(tǐ)成員(yuán)之間的信息交互。工(gōng)作流需要依靠工(gōng)作流管理系統來實現。
工(gōng)作流屬于計算機支持的協同工(gōng)作(computer supported cooperative work,cscw)的一(yī)部分(fēn)。後者是普遍地研究一(yī)個群體(tǐ)如何在計算機的幫助下(xià)實現協同工(gōng)作的。
工(gōng)作流的主要功能:
----工(gōng)作流管理系統(workflowmanagementsystem,wfms)是定義、創建、執行工(gōng)作流的系統。在最高層上,wfms應能提供以下(xià)三個方面的功能支持:
�8�4 建造功能:對工(gōng)作流過程及其組成活動定義和建模;
�8�4 運行控制功能:在運行環境中(zhōng)管理工(gōng)作流過程,對工(gōng)作流過程中(zhōng)的活動進行調度;
�8�4 運行交互功能:指在工(gōng)作流運行中(zhōng),wfms與用戶(業務工(gōng)作的參與者或控制者)及外(wài)部應用程序工(gōng)具交互的功能。
工(gōng)作流管理系統帶來的好處:
----由于信息技術的發展和日趨激烈的商(shāng)業競争,人們不再滿足于獨立、零散的辦公自動化和計算機應用,而是需要綜合的、集成化的解決方案。作爲一(yī)種對常規性事務進行管理、集成的技術,wfms的出現是必然的。它可以帶來以下(xià)收益:
�8�4 改進和優化業務流程,提高業務工(gōng)作效率;
�8�4 實現更好的業務過程控制,提高顧客服務質量;
�8�4 提高業務流程的柔性等。
工(gōng)作流系統的主要組成部分(fēn)
1.過程定義工(gōng)具
----過程定義工(gōng)具被用來創建計算機可處理的業務過程描述。它可以是形式化的過程定義語言或對象關系模型,也可以是簡單地規定用戶間信息傳輸的一(yī)組路由命令。
----2.過程定義
----過程定義(數據)包含了所有使業務過程能被工(gōng)作流執行子系統執行的必要信息。這些信息包括起始和終止條件、各個組成活動、活動調度規則、各業務的參與者需要做的工(gōng)作、相關應用程序和數據的調用信息等。
金諾科技的oa采用微軟唯一(yī)的工(gōng)作流平台workflow foundation來開(kāi)發産品的工(gōng)作流,workflow foundation是微軟四大(dà)核心技術之一(yī),爲微軟産品及相關應用程序提供通用的工(gōng)作流設計平台和開(kāi)發工(gōng)具,它是一(yī)個進程内的工(gōng)作流引擎,運行在内存中(zhōng),速度快并且穩定,這是一(yī)般工(gōng)作流所不具備的,金諾oa用戶可以自行定義修改流程,從而實現自由流程和固定流程的完美集合,以适應需求的變化,操作也非常簡單,隻要通過拖拽就可以現實工(gōng)作流的定義! =================================================================================希望采納!o(∩_∩)o~