Activiti工作流引擎定製

2021-10-03 07:15:03 字數 3545 閱讀 8678

當前開源工作流引擎主要有jbpm、activiti、flowable幾種,其中flowable與activiti同出一源,flowable為activiti6.0主創人員出走後fork的新分支,與activiti6.0演進思路一致,activiti7.0更強調雲功能;jbpm為jboss產品,jbpm5以來基於drools flow開發,而這也成為activiti5的開端,據說因技術方案分歧,原jbpm4主創人員出走,開發了activiti5;國內目前採用activiti較多,文件資料也較完善,我們在多個專案中採用了activit5和flowable。

activiti由activiti engine、activiti explorer、activiti design、activiti rest等元件組成,若無需支援使用者自定義流程,可直接使用activiti explorer或activiti design設計流程圖,activiti rest提供了activiti的restful管理服務,可直接嵌入使用者應用,提供流程配置管理的後端服務功能,若需定製開發前端流程繪製介面,可基於bpmn-js實現,簡化開發過程。

流程引擎當前業界標準為bpmn2.0,bpmn標準是bpmi組織發布,目標是業務流程的所有人都能對流程進行視覺化管理,它提供

一套易於理解的語言和標記,為業務/技術人員搭起一座橋梁;允許引擎**商新增額外的屬性,但不允許與任何的bpmn元素產生衝突,擴充套件後的流程圖,應讓所有參與者能輕鬆看懂【bpmn  的流程元素不允許改變】,否則就違背了bpmn規範的初衷。

activiti除提供bpmn2.0標準元素的實現外,也提供了一些個性化元素,以簡化流程配置,強化功能;同時,activiti架構設計較為合理,各元件基本均提供了個性化配置方式,應用可繼承基礎實現,定製實現個性化邏輯,如:

使用者與組管理:activiti

自帶使用者

/組管理模組,多對多模型;一般較少直接使用

activiti

的使用者/組管理模組,除非以工作流為核心的小系統;常見與應用系統使用者管理模型整合方式有:

public class minegroupidentitymanager extends groupentitymanager 

}public class minegroupindentityfactory implements sessionfactory

@override

public session opensession()

}public class mineidentityinfoentityfactory implements sessionfactory

@override

public session opensession()

}public class mineidentityinfoentitymanager extends identityinfoentitymanager

}

表單引擎:activiti自帶

juel

引擎,支援

el表示式,輸出

html

文字,一般大型系統較少使用,尤其現在前端技術日新月異,react/vue等前端元件化開發技術大幅提公升前端開發效率及可維護性,大型系統更多採用自己的檢視技術,也可以通過開發並實現

formengine

自定義類,配置customformengines引數載入自定義模板引擎,如下**所示:

public class mineformengine extends juelformengine 

@override

public object rendertaskform(taskformdata taskform)

@override

protected string getformtemplatestring(formdata forminstance, string formkey)

}

變數與表示式:activiti預設支援

uel表示式,且有所增強,如$、$、$、$;

p若有特殊需求,可繼承

expressionmanager

,並通過expressionmanager引數注入例項,如下**:

public class mineexpressionmanager extends expressionmanager 

}

流程資源解析:

***:

id產生器:activiti預設採用自增鍵生成id,高併發時成為瓶頸,可以繼承idgenerator實現自定義id產生器,如下**:

public class mineidgenerator implements idgenerator 

}

springboot環境下activiti配置類:

@component

public class mineprocessengineconfigurationconfigurer implements processengineconfigurationconfigurer

private void setidentigroupmanager(springprocessengineconfiguration engineconfiguration)

customsessionfactories.add(new minegroupindentityfactory());

customsessionfactories.add(new mineidentityinfoentityfactory());

}private void setcustomformtypes(springprocessengineconfiguration engineconfiguration)

customformtypes.add(new mineuserformtype());

}private void setcustomformengines(springprocessengineconfiguration engineconfiguration)

customformengines.add(new mineformengine());

engineconfiguration.setcustomformengines(customformengines);

}private void setbeans(springprocessengineconfiguration engineconfiguration) };

engineconfiguration.setbeans(beans);

}private void setidgenerator(springprocessengineconfiguration engineconfiguration)

private void setglobaleventlisteners(springprocessengineconfiguration engineconfiguration)

}

activiti原始碼實現有許多值得借鑑的地方,尤其是開發通用產品時,各個元件設計時預留了充分的、可配置化的擴充套件空間,使得產品應用時可隨需定製,產品更易於適用到各種業務場景。

Activiti5工作流引擎

1.1 1 pocessengine是activiti中最核心的類,其他的類都是由他而來 1.1 2 產生方式 processengine processengine processengines.getdefaultprocessengine 呼叫 processengine的getdefault...

Activiti工作流引擎學習總結

經過這三天對與activiti的軟磨硬泡,也算是小有所獲。想要學會工作流引擎其實很簡單,搞清楚processengine activiti引擎 並且理解其中幾大服務介面 服務 repositoryservice 資源相關的服務 runtimeservice 流程啟動以及執行的相關服務 taskser...

Activiti 工作流引擎 獲取審批記錄

審批意見儲存在act hi comment表中 審批狀態儲存在act hi varinst表中,為任務變數 historyservice historyservice this.gethistoryservice taskservice taskservice this.gettaskservice...