国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

若依框架SpringBoot+Activiti工作流的使用

這篇具有很好參考價(jià)值的文章主要介紹了若依框架SpringBoot+Activiti工作流的使用。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

使用簡(jiǎn)介:本技術(shù)點(diǎn)主要是針對(duì)類審批的業(yè)務(wù)流程的建模,可以有:任務(wù)發(fā)布(即流程開(kāi)始)到一級(jí)一級(jí)的審批到最終結(jié)束(即流程結(jié)束)一整套完備的模型

1、idea下載activiti插件

  1. ider以前版本下載actiBPM,但是新版ider這個(gè)插件已經(jīng)被淘汰,已經(jīng)被下面這個(gè)替代

?若依框架SpringBoot+Activiti工作流的使用,spring boot,后端,java

?若依框架SpringBoot+Activiti工作流的使用,spring boot,后端,java

2、單獨(dú)起一個(gè)activiti服務(wù)

3、添加依賴在activiti服務(wù)中:

<dependency>
???<groupId>org.springframework.boot</groupId>
???<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
???<groupId>org.springframework.boot</groupId>
???<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
???<groupId>org.springframework.boot</groupId>
???<artifactId>spring-boot-starter-test</artifactId>
</dependency>
<dependency>
???<groupId>org.activiti</groupId>
???<artifactId>activiti-spring-boot-starter</artifactId>
???<version>7.0.0.Beta2</version>
</dependency>
<dependency>
???<groupId>org.mybatis.spring.boot</groupId>
???<artifactId>mybatis-spring-boot-starter</artifactId>
???<version>2.0.0</version>
</dependency>
<dependency>
???<groupId>mysql</groupId>
???<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
???<groupId>org.projectlombok</groupId>
???<artifactId>lombok</artifactId>
</dependency>

4、添加配置

我這里的服務(wù)結(jié)構(gòu):

?若依框架SpringBoot+Activiti工作流的使用,spring boot,后端,java

a、activiti.cfg.xml的配置(直接粘,需要修改為自己的數(shù)據(jù)庫(kù)):

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
??????xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
??????xmlns:context="http://www.springframework.org/schema/context"
??????xmlns:tx="http://www.springframework.org/schema/tx"
??????xsi:schemaLocation="http://www.springframework.org/schema/beans
???????????????????http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/contex
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd">
???<!-- 默認(rèn)id對(duì)應(yīng)的值 為processEngineConfiguration -->
???<!-- processEngine Activiti的流程引擎 -->
???<bean id="processEngineConfiguration"
?????????class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">
???????<property name="jdbcDriver" value="com.mysql.cj.jdbc.Driver"/>
???????<property name="jdbcUrl" value="jdbc:mysql://*****:3306/activiti"/>
???????<property name="jdbcUsername" value="root"/>
???????<property name="jdbcPassword" value="*****"/>
???????<!-- activiti數(shù)據(jù)庫(kù)表處理策略 不存在就創(chuàng)建表-->
???????<property name="databaseSchemaUpdate" value="true"/>
???</bean>
</beans>

配置講解:

?若依框架SpringBoot+Activiti工作流的使用,spring boot,后端,java

b、添加log4j的配置(無(wú)需修改,直接粘):

# Set root category priority to INFO and its only appender to CONSOLE.
#log4j.rootCategory=INFO, CONSOLE debug info warn error fatal
log4j.rootCategory=debug, CONSOLE, LOGFILE
# Set the enterprise logger category to FATAL and its only appender to CONSOLE.
log4j.logger.org.apache.axis.enterprise=FATAL, CONSOLE
# CONSOLE is set to be a ConsoleAppender using a PatternLayout.
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{ISO8601} %-6r[%15.15t] %-5p %30.30c %x - %m\n
# LOGFILE is set to be a File appender using a PatternLayout.
log4j.appender.LOGFILE=org.apache.log4j.FileAppender
log4j.appender.LOGFILE.File=d:\XX\activiti.log
log4j.appender.LOGFILE.Append=true
log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
log4j.appender.LOGFILE.layout.ConversionPattern=%d{ISO8601} %-6r[%15.15t] %-5p %30.30c %x - %m\n

  1. 創(chuàng)建流程圖文件:

?若依框架SpringBoot+Activiti工作流的使用,spring boot,后端,java

在創(chuàng)建好的文件中任意位置右鍵,選擇 View BPMN Diagram,打開(kāi)可視化界面(流程定義的界面

若依框架SpringBoot+Activiti工作流的使用,spring boot,后端,java

任意右鍵選擇定義流程:

若依框架SpringBoot+Activiti工作流的使用,spring boot,后端,java

?若依框架SpringBoot+Activiti工作流的使用,spring boot,后端,java

?若依框架SpringBoot+Activiti工作流的使用,spring boot,后端,java

?若依框架SpringBoot+Activiti工作流的使用,spring boot,后端,java

?若依框架SpringBoot+Activiti工作流的使用,spring boot,后端,java

解決圖片亂碼問(wèn)題

1.打開(kāi) IDEA 安裝路徑,找到如下的安裝目錄

若依框架SpringBoot+Activiti工作流的使用,spring boot,后端,java

追加一條命令: -Dfile.encoding=UTF-8
如下所示

若依框架SpringBoot+Activiti工作流的使用,spring boot,后端,java

至此activiti的準(zhǔn)備工作結(jié)束,一下是代碼部分:

一、demo代碼示例:
public class TestCreateTable {
???/**
????* 生成 activiti的數(shù)據(jù)庫(kù)表
????*/
???@Test
???public void testCreateDbTable() {
???????//使用classpath下的activiti.cfg.xml中的配置創(chuàng)建processEngine
???????//如果使用默認(rèn)則需要上面activiti.cfg.xml配置
???????ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
???????System.out.println(processEngine);
???}

???//部署
???@Test
???public void test01() {
???????//1、創(chuàng)建ProcessEngine
???????ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
???????//2、得到RepositoryService實(shí)例
???????RepositoryService repositoryService = processEngine.getRepositoryService();
???????//3、使用RepositoryService進(jìn)行部署
???????Deployment deploy = repositoryService.createDeployment().addClasspathResource("bpmn/chuchai.bpmn20.xml")
???????????????.addClasspathResource("bpmn/diagram.png")
???????????????.name("團(tuán)購(gòu)申請(qǐng)v1.0")
???????????????.deploy();
???????//4、輸出部署信息
???????System.out.println("部署id"+deploy.getId());
???????System.out.println("部署的任務(wù)名稱:"+deploy.getName());
???}

???//啟動(dòng)流程
???@Test
???public void testDeploy() {
???????//1.創(chuàng)建ProcessEngine對(duì)象
???????ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
???????//創(chuàng)建TaskService
???????TaskService taskService = processEngine.getTaskService();

???????Map<String, Object> variables = new HashMap<>();
???????//張三就是在bpmnAssignee配置的參數(shù)
???????variables.put("張三", "aaa");
???????//3.創(chuàng)建流程實(shí)例 ?流程定義的key需要知道?holiday
???????ProcessInstance processInstance = ProcessEngines.getDefaultProcessEngine()
???????????????.getRuntimeService()
???????????????.startProcessInstanceByKey("chuchai", variables);
???????Task tmp = taskService.createTaskQuery()
???????????????.processInstanceId(processInstance.getProcessInstanceId()).singleResult();
???????tmp.setAssignee("張三");
???????//完成此節(jié)點(diǎn)。由下一節(jié)點(diǎn)審批。完成后act_ru_task會(huì)創(chuàng)建一條由下節(jié)點(diǎn)審批的數(shù)據(jù)
???????taskService.complete(tmp.getId(),variables);
???????//4.輸出實(shí)例的相關(guān)信息
???????System.out.println( "流程部署ID" + processInstance.getDeploymentId() );
???????System.out.println( "流程定義ID" + processInstance.getProcessDefinitionId());
???????System.out.println( "流程實(shí)例ID" + processInstance.getId() );
???????System.out.println( "活動(dòng)ID" + processInstance.getActivityId() );
???}


???@Test
???//查詢?nèi)蝿?wù)
???public void test(){
???????ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
???????//創(chuàng)建TaskService
???????TaskService taskService = processEngine.getTaskService();
???????//根據(jù)流程key 和 任務(wù)負(fù)責(zé)人 查詢?nèi)蝿?wù)
???????List<Task> list = taskService.createTaskQuery()
???????????????.processDefinitionKey("chuchai") //流程Key
???????????????.taskAssignee("張三")//只查詢?cè)撊蝿?wù)負(fù)責(zé)人的任務(wù)
???????????????.list();

???????for (Task task : list) {
???????????System.out.println("流程實(shí)例id" + task.getProcessInstanceId());
???????????System.out.println("任務(wù)id" + task.getId());
???????????System.out.println("任務(wù)負(fù)責(zé)人:" + task.getAssignee());
???????????System.out.println("任務(wù)名稱:" + task.getName());
???????}

???}

???//審批流程
???@Test
???public void test1(){
???????//1.創(chuàng)建ProcessEngine對(duì)象
???????ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
???????//創(chuàng)建TaskService
???????TaskService taskService = processEngine.getTaskService();
???????//根據(jù)角色信息獲取自己的待辦
???????List<Task> T = taskService.createTaskQuery().taskAssignee("zs").list();
???????if(!ObjectUtils.isEmpty(T)) {
???????????for (Task item : T) {
???????????????Map<String, Object> variables = new HashMap<>();
???????????????variables.put("張三", "zs");
???????????????variables.put("isSuccess", true);
???????????????item.setAssignee("李四");
???????????????//增加審批備注
???????????????taskService.addComment(item.getId(),item.getProcessInstanceId(),"部門(mén)經(jīng)理同意");
???????????????//完成此次審批。由下節(jié)點(diǎn)審批
???????????????taskService.complete(item.getId(), variables);
???????????}
???????}
???}

???// 結(jié)束流程
???@Test
???public void test02() {
???????//1.創(chuàng)建ProcessEngine對(duì)象
???????ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
???????// ???????創(chuàng)建TaskService
???????TaskService taskService = processEngine.getTaskService();
???????//act_re_execution id
???????String taskId = "42503";
???????// ???????任務(wù)負(fù)責(zé)人
???????String assingee = "李四";
???????Task task = taskService.createTaskQuery()
???????????????.taskId(taskId)
???????????????.taskAssignee(assingee)
???????????????.singleResult();
???????if (task != null) {
???????????HashMap<String, Object> map = new HashMap<>();
???????????map.put("agree", 1);
???????????taskService.complete(taskId, map);

???????????System.out.println("完成任務(wù)");
???????}

???}
}

二、項(xiàng)目代碼示例:controller層代碼(這里是運(yùn)用到項(xiàng)目中的代碼)


@RestController
@RequestMapping("/activiti")
@Slf4j
public class ActivitiController {

???@Autowired
???private IActivitiService iActivitiService;
???//生成25張表
???@GetMapping
???public Result getTables(){
???????log.info("開(kāi)始生成表................................................................");
???????Result result = iActivitiService.getTable();
???????return result;
???}

???//流程部署
???@GetMapping("/bushu")
???public Result bushu(){
???????log.info("部署?");
? ? ? ?return Result.success("ok");

???}

???//查詢個(gè)人待執(zhí)行的任務(wù)
???@GetMapping("/list")
???public Result list(){
???????log.info("查詢個(gè)人待執(zhí)行的任務(wù)");
???????Result result = iActivitiService.list();
???????return result;
???}

???//結(jié)束
???@GetMapping("/complete")
???public Result complete(){
???????log.info("結(jié)束");
???????Result result = iActivitiService.complete();
???????return result;
???}
}

Service層代碼:


@Service
@Repository
@Slf4j
public class ActivitiServiceImpl implements IActivitiService {

???@Autowired
???public IActivitiMapper iActivitiMapper;

???@Override
???public Result getTable() {
???????//使用classpath下的activiti.cfg.xml中的配置創(chuàng)建processEngine
???????//如果使用默認(rèn)則需要上面activiti.cfg.xml配置
???????ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
???????return Result.success("生成表成功");
???}

???@Override
???public Result bushu() {
???????//1、創(chuàng)建ProcessEngine
???????ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
???????//2、得到RepositoryService實(shí)例
???????RepositoryService repositoryService = processEngine.getRepositoryService();
???????//3、使用RepositoryService進(jìn)行部署
???????Deployment deploy = repositoryService.createDeployment().addClasspathResource("activiti/groupactiviti.bpmn20.xml")
???????????????.addClasspathResource("activiti/groupactiviti.png")
???????????????.name("團(tuán)購(gòu)申請(qǐng)審批")
???????????????.deploy();
???????//4、輸出部署信息
???????log.info("部署id"+deploy.getId());
???????log.info("部署的任務(wù)名稱:"+deploy.getName());

???????//5、啟動(dòng)流程定義 ??????根據(jù)流程定義的id啟動(dòng)流程???????????????????????????key:act_re_procdef中的KEY
???????//創(chuàng)建TaskService
???????TaskService taskService = processEngine.getTaskService();

???????Map<String, Object> variables = new HashMap<>();
???????String username = SecurityUtils.getLoginUser().getSysUser().getUserName();
// ???????String username = "admin";
???????//user就是在bpmnAssignee配置的參數(shù)
???????variables.put("admin", username);
???????//3.創(chuàng)建流程實(shí)例 ?流程定義的key需要知道?holiday
???????ProcessInstance processInstance = ProcessEngines.getDefaultProcessEngine()
???????????????.getRuntimeService()
???????????????.startProcessInstanceByKey("groupactiviti", variables);
???????System.out.println(processInstance+"=============================================");
???????Task tmp = taskService.createTaskQuery()
???????????????.processInstanceId(processInstance.getProcessInstanceId()).singleResult();
???????tmp.setAssignee("ry");
???????//完成此節(jié)點(diǎn)。由下一節(jié)點(diǎn)審批。完成后act_ru_task會(huì)創(chuàng)建一條由下節(jié)點(diǎn)審批的數(shù)據(jù)
???????taskService.complete(tmp.getId(),variables);
???????//4.輸出實(shí)例的相關(guān)信息
???????log.info("流程部署ID" + processInstance.getDeploymentId() );
???????log.info("流程定義ID" + processInstance.getProcessDefinitionId());
???????log.info("流程實(shí)例ID" + processInstance.getId());
???????log.info("活動(dòng)ID" + processInstance.getActivityId());
???????return Result.success(true,"申請(qǐng)已提交");
???}

???//個(gè)人待執(zhí)行任務(wù)
???@Override
???public Result list() {
???????ProcessEngine defaultProcessEngine = ProcessEngines.getDefaultProcessEngine();
???????TaskService taskService = defaultProcessEngine.getTaskService();
???????// 查詢當(dāng)前登錄人的任務(wù) 進(jìn)行完成
???????String username= SecurityUtils.getLoginUser().getSysUser().getUserName();
???????System.out.println("當(dāng)前登錄人"+username);

???????if (username == null){
???????????throw new CheckedException("當(dāng)前登錄人為空");
???????}
???????List<Task> task = taskService.createTaskQuery()
???????????????.processDefinitionKey("groupactiviti")
???????????????.taskAssignee(username)
???????????????.list();
???????System.out.println("==================="+task);
???????if(!ObjectUtils.isEmpty(task)) {
???????????for (Task item : task) {
???????????????Map<String, Object> variables = new HashMap<>();
???????????????if (username.equals("ry")){
???????????????????variables.put("ry", username);
???????????????????variables.put("isSuccess", true);
???????????????????item.setAssignee("aaa");
???????????????????//增加審批備注
???????????????????taskService.addComment(item.getId(),item.getProcessInstanceId(),"部門(mén)經(jīng)理已同意");
???????????????????//完成此次審批。由下節(jié)點(diǎn)審批??act_hi_taskinst會(huì)修改時(shí)間
???????????????????taskService.complete(item.getId(), variables);
???????????????}
???????????????if (username.equals("aaa")){
???????????????????variables.put("aaa", username);
???????????????????variables.put("isSuccess", true);
???????????????????item.setAssignee("aaa");
???????????????????//增加審批備注
???????????????????taskService.addComment(item.getId(),item.getProcessInstanceId(),"財(cái)務(wù)已同意");
???????????????????//完成此次審批。由下節(jié)點(diǎn)審批??act_hi_taskinst會(huì)修改時(shí)間
???????????????????taskService.complete(item.getId(), variables);
???????????????}
???????????}
???????}
???????return Result.success(true,"審核成功");
???}

???// 結(jié)束
???@Override
???public Result complete() {
???????//1.創(chuàng)建ProcessEngine對(duì)象
???????ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
???????//創(chuàng)建TaskService
???????TaskService taskService = processEngine.getTaskService();
???????// 獲取當(dāng)前登錄人 判斷是admin才結(jié)束任務(wù)
???????String username = SecurityUtils.getLoginUser().getSysUser().getUserName();
// ???????String username = "aaa";
???????if (username == null) {
???????????throw new CheckedException("當(dāng)前登錄人為空");
???????}
???????if (username.equals("aaa")) {
???????????//act_re_execution 任務(wù)id
???????????Task task = taskService.createTaskQuery()
???????????????????.processDefinitionKey("groupactiviti")
???????????????????.taskAssignee(username)
???????????????????.singleResult();
???????????if (task != null) {
???????????????HashMap<String, Object> map = new HashMap<>();
???????????????map.put("agree", 1);
???????????????taskService.complete(task.getId(), map);
???????????????System.out.println("完成任務(wù)");
???????????}
???????}
???????return Result.success(true,"審核成功");
???}

}

定義遠(yuǎn)程調(diào)用remote供別的服務(wù)調(diào)用

結(jié)構(gòu):

若依框架SpringBoot+Activiti工作流的使用,spring boot,后端,java

  1. ActivitiRemoteFallback代碼:



/**
* activiti服務(wù)降級(jí)處理
*
* @author?
*/
@Component
public class ActivitiRemoteFallback implements FallbackFactory<ActivitiRemoteService>
{
???private static final Logger log = LoggerFactory.getLogger(ActivitiRemoteFallback.class);

???@Override
???public ActivitiRemoteService create(Throwable cause) {
???????log.error("工作流調(diào)用失敗:{}", cause.getMessage());
???????return new ActivitiRemoteService(){


???????????@Override
???????????public Result getTables() {
???????????????return null;
???????????}

???????????@Override
???????????public Result bushu() {
???????????????return Result.error("遠(yuǎn)程調(diào)用工作流部署失敗");
???????????}

???????????@Override
???????????public Result list() {
???????????????return Result.error("遠(yuǎn)程調(diào)用工作流審核失敗");
???????????}

???????????@Override
???????????public Result complete() {
???????????????return Result.error("遠(yuǎn)程調(diào)用工作流結(jié)束審核失敗");
???????????}
???????};
???}
}

  1. ActivitiRemoteService代碼:



/**
* 用戶服務(wù)
*
* @author bawei
*/
@FeignClient(contextId = "rctivitiRemoteService",
???????value = ServiceNameConstants.****自己的文件名,
???????fallbackFactory = ActivitiRemoteFallback.class,path = "/activiti")
public interface ActivitiRemoteService {
???//生成25張表
???@GetMapping
???public Result getTables();

???//流程部署
???@GetMapping("/bushu")
???public Result bushu();

???//查詢個(gè)人待執(zhí)行的任務(wù)
???@GetMapping("/list")
???public Result list();
???//結(jié)束
???@GetMapping("/complete")
???public Result complete();
}

  1. org.springframework.boot.autoconfigure.AutoConfiguration.imports配置的代碼

最后:在需要使用Activiti的地方直接注入該服務(wù)即可文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-676801.html

到了這里,關(guān)于若依框架SpringBoot+Activiti工作流的使用的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • SpringBoot整合Activiti實(shí)現(xiàn)工作流的低代碼系統(tǒng)(附源碼和配套文檔)

    SpringBoot整合Activiti實(shí)現(xiàn)工作流的低代碼系統(tǒng)(附源碼和配套文檔)

    activiti工作流引擎項(xiàng)目,企業(yè)erp、oa、hr、crm等企事業(yè)辦公系統(tǒng)輕松落地,一套完整并且實(shí)際運(yùn)用在多套項(xiàng)目中的案例,滿足日常業(yè)務(wù)流程審批需求。 springboot+vue+activiti集成了activiti在線編輯器,流行的前后端分離部署開(kāi)發(fā)模式,快速開(kāi)發(fā)平臺(tái),可插拔工作流服務(wù)。工作流表單

    2024年03月15日
    瀏覽(21)
  • 【業(yè)務(wù)功能篇38】上篇:Springboot+activiti7 工作流引擎 增加網(wǎng)關(guān)組件、Assignment分配權(quán)限

    【業(yè)務(wù)功能篇38】上篇:Springboot+activiti7 工作流引擎 增加網(wǎng)關(guān)組件、Assignment分配權(quán)限

    在前面的一篇文章中,簡(jiǎn)單舉例了一個(gè) 工單電子流,【業(yè)務(wù)功能篇36】Springboot+activiti7 工作流引擎_studyday1的博客-CSDN博客僅有一個(gè)子任務(wù),這種一般是針對(duì)比較簡(jiǎn)單的一個(gè)遺留問(wèn)題記錄場(chǎng)景,今天再介紹一個(gè),相對(duì)比較復(fù)雜的流程,多個(gè)處理,審批節(jié)點(diǎn)任務(wù),通過(guò)排他網(wǎng)關(guān)組

    2024年02月13日
    瀏覽(20)
  • 【工作流】Activiti工作流簡(jiǎn)介以及Spring Boot 集成 Activiti7

    【工作流】Activiti工作流簡(jiǎn)介以及Spring Boot 集成 Activiti7

    什么是工作流? 工作流指通過(guò)計(jì)算機(jī)對(duì)業(yè)務(wù)流程進(jìn)行自動(dòng)化管理,實(shí)現(xiàn)多個(gè)參與者按照預(yù)定義的流程去自動(dòng)執(zhí)行業(yè)務(wù)流程。 文章源碼托管:https://github.com/OUYANGSIHAI/Activiti-learninig Activiti5是由Alfresco軟件在2010年5月17日發(fā)布的業(yè)務(wù)流程管理(BPM)框架,它是覆蓋了業(yè)務(wù)流程管理、

    2024年02月08日
    瀏覽(31)
  • Activiti 工作流簡(jiǎn)介

    Activiti 工作流簡(jiǎn)介

    1、什么是工作流 ????????工作流(Workflow),就是通過(guò)計(jì)算機(jī)對(duì)業(yè)務(wù)流程自動(dòng)化執(zhí)行管理。它主要解決的是“使在多個(gè)參與者之間按照某種預(yù)定義的規(guī)則自動(dòng)進(jìn)行傳遞文檔、信息或任務(wù)的過(guò)程,從而實(shí)現(xiàn)某個(gè)預(yù)期的業(yè)務(wù)目標(biāo),或者促使此目標(biāo)的實(shí)現(xiàn)”。 1.2、工作流系統(tǒng) ??

    2024年02月04日
    瀏覽(20)
  • 【activiti】工作流入門(mén)基礎(chǔ)概念

    為什么使用activiti 狀態(tài)--------------------------------------------------引擎engin(業(yè)務(wù)變動(dòng)不影響程序的進(jìn)行) 每個(gè)人只能看到個(gè)人負(fù)責(zé)的,流程變更困難 bpmn建模語(yǔ)言 activiti流程步驟 步驟: 1、部署流程 2、定義流程 3、部署流程定義:使用activiti中的API把流程定義存儲(chǔ),在Acitivti執(zhí)行過(guò)

    2024年02月16日
    瀏覽(43)
  • 模仿Activiti工作流自動(dòng)建表機(jī)制,實(shí)現(xiàn)Springboot項(xiàng)目啟動(dòng)后自動(dòng)創(chuàng)建多表關(guān)聯(lián)的數(shù)據(jù)庫(kù)與表的方案

    模仿Activiti工作流自動(dòng)建表機(jī)制,實(shí)現(xiàn)Springboot項(xiàng)目啟動(dòng)后自動(dòng)創(chuàng)建多表關(guān)聯(lián)的數(shù)據(jù)庫(kù)與表的方案

    文/朱季謙 熬夜寫(xiě)完,尚有不足,但仍在努力學(xué)習(xí)與總結(jié)中,而您的點(diǎn)贊與關(guān)注,是對(duì)我最大的鼓勵(lì)! 在一些本地化項(xiàng)目開(kāi)發(fā)當(dāng)中,存在這樣一種需求,即開(kāi)發(fā)完成的項(xiàng)目,在第一次部署啟動(dòng)時(shí),需能自行構(gòu)建系統(tǒng)需要的數(shù)據(jù)庫(kù)及其對(duì)應(yīng)的數(shù)據(jù)庫(kù)表。 若要解決這類需求,其實(shí)

    2024年01月24日
    瀏覽(28)
  • 若依低代碼平臺(tái)(帶工作流引擎版本)使用記錄

    若依低代碼平臺(tái)(帶工作流引擎版本)使用記錄

    目錄 0 平臺(tái)介紹 1 創(chuàng)建數(shù)據(jù)庫(kù) 2 Redis緩存數(shù)據(jù)庫(kù) 3 修改配置文件 4 修改maven依賴 5 運(yùn)行后臺(tái) 6 運(yùn)行前端 7 運(yùn)行效果 帶工作流引擎的開(kāi)源低代碼平臺(tái)并不常有,這是基于若依開(kāi)發(fā)的工作流版本低代碼平臺(tái),MIT開(kāi)源協(xié)議,前后端分離,前端使用Vue框架,后端SpringBoot。 本文引用的

    2024年02月12日
    瀏覽(48)
  • 【idea中Activiti BPMN visualizer插件和Camunda Modeler工作流設(shè)計(jì)器的簡(jiǎn)單使用】

    【idea中Activiti BPMN visualizer插件和Camunda Modeler工作流設(shè)計(jì)器的簡(jiǎn)單使用】

    1、Idea中的工作流插件Activiti BPMN visualizer Activiti插件actiBPM在新版的idea 2020及以上版本中已經(jīng)不支持,Activiti BPMN visualizer是一款支持編輯和游覽工作流設(shè)計(jì)圖的idea插件,但是它對(duì)工作流設(shè)計(jì)中的網(wǎng)關(guān)設(shè)計(jì)支持并不太友好;下面第4章節(jié)我們用到Camunda Modeler軟件來(lái)協(xié)助設(shè)計(jì)整體工

    2023年04月09日
    瀏覽(27)
  • 【工作流Activiti7】4、Activiti7 結(jié)束/終止流程

    【工作流Activiti7】4、Activiti7 結(jié)束/終止流程

    1.? 結(jié)束/終止 正在運(yùn)行的流程實(shí)例 思路:跟回退一樣的思路一樣,直接從當(dāng)前節(jié)點(diǎn)跳到結(jié)束節(jié)點(diǎn)(EndEvent)? 補(bǔ)充1:關(guān)于BUSINESS_KEY_ BUSINESS_KEY_ 字段是用于將業(yè)務(wù)系統(tǒng)與Actititi工作流關(guān)聯(lián)的段,通常我們用它來(lái)存放業(yè)務(wù)表的ID,比如:請(qǐng)假ID、報(bào)銷ID等等。 但是,通常咱

    2024年02月09日
    瀏覽(19)
  • 【工作流Activiti7】3、Activiti7 回退與會(huì)簽

    【工作流Activiti7】3、Activiti7 回退與會(huì)簽

    1.? 回退(駁回) 回退的思路就是動(dòng)態(tài)更改節(jié)點(diǎn)的流向。先遇水搭橋,最后再過(guò)河拆橋。 具體操作如下: 取得當(dāng)前節(jié)點(diǎn)的信息 取得當(dāng)前節(jié)點(diǎn)的上一個(gè)節(jié)點(diǎn)的信息 保存當(dāng)前節(jié)點(diǎn)的流向 新建流向,由當(dāng)前節(jié)點(diǎn)指向上一個(gè)節(jié)點(diǎn) 將當(dāng)前節(jié)點(diǎn)的流向設(shè)置為上面新建的流向 當(dāng)前節(jié)點(diǎn)完

    2023年04月20日
    瀏覽(24)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包