activiti实战

activiti实战

数据库

  • 1、act_ge_ 通用数据表,ge是general的缩写
  • 2、act_hi_ 历史数据表,hi是history的缩写,对应HistoryService接口
  • 3、act_id_ 身份数据表,id是identity的缩写,对应IdentityService接口
  • 4、act_re_ 流程存储表,re是repository的缩写,对应RepositoryService接口,存储流程部署和流程定义等静态数据
  • 5、act_ru_ 运行时数据表,ru是runtime的缩写,对应RuntimeService接口和TaskService接口,存储流程实例和用户任务等动态数据

接口

在这里插入图片描述


ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();

RuntimeService runtimeService = processEngine.getRuntimeService();
RepositoryService repositoryService = processEngine.getRepositoryService();
TaskService taskService = processEngine.getTaskService();
ManagementService managementService = processEngine.getManagementService();
IdentityService identityService = processEngine.getIdentityService();
HistoryService historyService = processEngine.getHistoryService();
FormService formService = processEngine.getFormService();

   

  • RepositoryService:提供一系列管理流程部署和流程定义的API。
  • RuntimeService:在流程运行时对流程实例进行管理与控制。
  • TaskService:对流程任务进行管理,例如任务提醒、任务完成和创建任务等。
  • IdentityService:提供对流程角色数据进行管理的API,这些角色数据包括用户组、用户及它们之间的关系。
  • ManagementService:提供对流程引擎进行管理和维护的服务。
  • HistoryService:对流程的历史数据进行操作,包括查询、删除这些历史数据。
  • FormService:表单服务。

web流程设计工具

1.将Activiti提供的流程设计器应用activiti-app.war部署到Tomcat的webapps目录。
2.创建新的MySql数据库。修改activiti-app\WEB-INF\classes\META-INF\activiti-app目录下的db.properties配置文件改成使用MySql数据库(默认使用H2内存数据库,创建的模型重启后会丢失)。
3.开浏览器输入http://localhost:8080/activiti-explorer,使用用户kermit,密码kermit登录
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

设计一个请假流程

流程创建,并部署
在这里插入图片描述
在这里插入图片描述
流程信息如下:
在这里插入图片描述
发起申请,分别 是1天 和4天
在这里插入图片描述
把系统用户转换成activiti用户


	User user=identityService.newUser(*sysUser.getLoginName()*);
				user.setLastName(*sysUser.getUserName()*);
				user.setFirstName*(sysUser.getUserName()*);
				user.setEmail(*sysUser.getEmail()*);
				identityService.saveUser(user);

   

在这里插入图片描述创建群组(和请假流程的群组对应)


	Group  group = identityService.newGroup(*idGroup.getId()*);
		group.setName(*idGroup.getName()*);
		group.setType(*idGroup.getType()*);
		identityService.saveGroup(group);

   

在这里插入图片描述
用户群组绑定
在这里插入图片描述
查看任务


	//查出当前登录用户所在的用户组
		List<Group> groups = identityService.createGroupQuery()
				.groupMember(String.valueOf(getLoginName())).list();
		List<String> groupNames = groups.stream()
				.map(group -> group.getId()).collect(Collectors.toList());
		  if (groups == null){
			return null;
		  }
//查询用户组的待审批请假流程列表
		List<Task> tasks = taskService.createTaskQuery()
				//指定任务
				//.processDefinitionKey(ActConstant.ProcessInstance_QingJia)
				.taskCandidateGroupIn(groupNames)
				.listPage(pageDomain.getPageNum() - 1, pageDomain.getPageSize());

   


  //获取下个节点 信息
		ProcessInstance pi = runtimeService.createProcessInstanceQuery().processInstanceId(newOaTask.getProcessInstanceId()).singleResult();
		if(pi==null){
			log.info("insertLeaveApply 流程 {} 结束" ,id);
		}else{
			Task nextTask = taskService.createTaskQuery().processInstanceId(pi.getId()).singleResult();
			log.info("insertLeaveApply 流程 {} 进行中 ,下个任务 {}",id,nextTask.getId());
		}

   

在这里插入图片描述

(经理审核)-经理角色用户登录【这个任务ID是第一条审批时候的,和上面的不一样,请忽略】


//查询当前审批节点
        Task task = taskService.createTaskQuery().taskId(id).singleResult();
        if (ActConstant.ProcessResult_PASS.equals(auditResult)){  
           //通过
            //设置流程参数
            Map<String, Object> args = new HashMap<>();
            args.put("auditId", task.getId());
            //设置审批任务的执行人
            taskService.claim(task.getId(), getLoginName());
            //完成审批任务
            taskService.complete(task.getId(), args);
        }else{
          //  不通过
            runtimeService.deleteProcessInstance(task.getProcessInstanceId(), task.getId());
        }

   

在这里插入图片描述

之后可以看到 流程流转…
在这里插入图片描述
(总监审核)-总监角色用户登录
在这里插入图片描述
流程都流转到hr
在这里插入图片描述
hr登录查看任务
在这里插入图片描述
审核一个
在这里插入图片描述

集成springboot


package com.platform.config;

import org.activiti.engine.*;
import org.activiti.engine.impl.cfg.ProcessEngineConfigurationImpl;
import org.activiti.engine.impl.history.HistoryLevel;
import org.activiti.spring.ProcessEngineFactoryBean;
import org.activiti.spring.SpringProcessEngineConfiguration;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.transaction.PlatformTransactionManager;

import javax.sql.DataSource;

/**
 * 工作流相关配置   @author liuli
 * 7大接口
 * RepositoryService:提供一系列管理流程部署和流程定义的API。
 * RuntimeService:在流程运行时对流程实例进行管理与控制。
 * TaskService:对流程任务进行管理,例如任务提醒、任务完成和创建任务等。
 * IdentityService:提供对流程角色数据进行管理的API,这些角色数据包括用户组、用户及它们之间的关系。
 * ManagementService:提供对流程引擎进行管理和维护的服务。
 * HistoryService:对流程的历史数据进行操作,包括查询、删除这些历史数据。
 * FormService:表单服务。
 *
 * 1、act_ge_ 通用数据表,ge是general的缩写
 * 2、act_hi_ 历史数据表,hi是history的缩写,对应HistoryService接口
 * 3、act_id_ 身份数据表,id是identity的缩写,对应IdentityService接口
 * 4、act_re_ 流程存储表,re是repository的缩写,对应RepositoryService接口,存储流程部署和流程定义等静态数据
 * 5、act_ru_ 运行时数据表,ru是runtime的缩写,对应RuntimeService接口和TaskService接口,存储流程实例和用户任务等动态数据
 */
@Configuration
public class ActivitiConfig
{
    @Bean
    public ProcessEngineConfiguration processEngineConfiguration(DataSource dataSource, PlatformTransactionManager transactionManager)
    {
        SpringProcessEngineConfiguration processEngineConfiguration = new SpringProcessEngineConfiguration();
        processEngineConfiguration.setDataSource(dataSource);
        /**
         * false:false为默认值,设置为该值后,Activiti在启动时,会对比数据库表中保存的版本,如果没有表或者版本不匹配时,将在启动时抛出异常。
         * true:设置为该值后,Activiti会对数据库中所有的表进行更新,如果表不存在,则Activiti会自动创建。
         * create-drop:Activiti启动时,会执行数据库表的创建操作,在Activiti关闭时,执行数据库表的删除操作。
         * drop-create:Activiti启动时,执行数据库表的删除操作在Activiti关闭时,会执行数据库表的创建操作。
         */
        processEngineConfiguration.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE);
        processEngineConfiguration.setDatabaseType("mysql");
        processEngineConfiguration.setTransactionManager(transactionManager);
        // 流程图字体
        processEngineConfiguration.setActivityFontName("宋体");
        processEngineConfiguration.setAnnotationFontName("宋体");
        processEngineConfiguration.setLabelFontName("宋体");
        /**
         * 保存历史数据级别设置为full最高级别,便于历史数据的追溯
         * none:不保存任何的历史数据,因此,在流程执行过程中,这是最高效的。
         * activity:级别高于none,保存流程实例与流程行为,其他数据不保存。
         * audit:除activity级别会保存的数据外,还会保存全部的流程任务及其属性。audit为history的默认值。
         * full:保存历史数据的最高级别,除了会保存audit级别的数据外,还会保存其他全部流程相关的细节数据,包括一些流程参数等。
         */
        //使用系统业务自定义的
        processEngineConfiguration.setHistoryLevel(HistoryLevel.NONE);
        // 用户验证表改成使用视图
        processEngineConfiguration.setDbIdentityUsed(false);

        return processEngineConfiguration;
    }

    @Bean
    public ProcessEngineFactoryBean processEngine(ProcessEngineConfiguration processEngineConfiguration)
    {
        ProcessEngineFactoryBean processEngineFactoryBean = new ProcessEngineFactoryBean();
        processEngineFactoryBean
                .setProcessEngineConfiguration((ProcessEngineConfigurationImpl) processEngineConfiguration);
        return processEngineFactoryBean;
    }

    // 八大接口
    @Bean
    public RepositoryService repositoryService(ProcessEngine processEngine)
    {
        return processEngine.getRepositoryService();
    }

    @Bean
    public RuntimeService runtimeService(ProcessEngine processEngine)
    {
        return processEngine.getRuntimeService();
    }

    @Bean
    public TaskService taskService(ProcessEngine processEngine)
    {
        return processEngine.getTaskService();
    }

    @Bean
    public HistoryService historyService(ProcessEngine processEngine)
    {
        return processEngine.getHistoryService();
    }

    @Bean
    public FormService formService(ProcessEngine processEngine)
    {
        return processEngine.getFormService();
    }

    @Bean
    public IdentityService identityService(ProcessEngine processEngine)
    {
        return processEngine.getIdentityService();
    }

    @Bean
    public ManagementService managementService(ProcessEngine processEngine)
    {
        return processEngine.getManagementService();
    }

    @Bean
    public DynamicBpmnService dynamicBpmnService(ProcessEngine processEngine)
    {
        return processEngine.getDynamicBpmnService();
    }
}



时间和篇幅问题这里值提供了一个大致的思路和关键的业务代码,如有不懂可联系我 一起探讨

参考资料:
http://www.mossle.com/docs/activiti/index.html#activitiExplorer
https://juejin.im/post/5a4064365188252b145b4560
https://www.jianshu.com/p/701056e672a4
 
推荐教程:  
 Activiti7精讲Java通用工作流开发实战  :  http://www.notescloud.top/goods/detail/1140

 

### 回答1: "Activiti 实战 pdf" 是一本介绍Activiti流程引擎实战的电子书。该书主要介绍了Activiti的架构、流程设计、流程部署、活动和事件处理、任务管理、用户管理、历史记录、定时任务等内容。通过该书的学习,读者可以了解Activiti的基本原理,掌握Activiti的基本使用方法,在实际项目中使用Activiti开发高效、可靠的业务流程应用。 Activiti是一个开源的BPM流程引擎,它实现了BPMN 2.0规范,并提供了基于Java和Spring的API和服务。Activiti可以方便地与各种应用和平台集成,例如Spring、Spring Boot、Camunda、Drools、MuleSoft等。Activiti被广泛应用于企业级业务流程管理、工作流、电子商务、人力资源、金融等领域。 该书的作者是Tijs Rademakers、Ronald van Luttikhuizen、Jos Dirksen等人,他们是Activiti架构师和专家。该书除了提供详尽的文档和指导外,还包含了一些实践案例和示例代码,可以帮助读者更好地理解和运用Activiti。无论是初学者还是有经验的开发者,都可以从该书中获得收益,它是一本不可多得的Activiti学习资源。 ### 回答2: Activiti 实战 PDF 是一本关于 Activiti 工作流引擎的实践指南书籍,该书适合对工作流引擎有一定了解并希望使用 Activiti 实现工作流的开发人员和架构师阅读。 该书主要涵盖了 Activiti 的基本概念和使用方法,包括工作流引擎的基础知识、流程定义和流程实例的创建、流程图的绘制、任务分配和处理、流程监控和报表等。 这本书通过丰富的实例代码和图示,展示了 Activiti 在实际项目中的应用场景,并详细介绍了如何配置和使用 Activiti,如如何在 Java 代码中使用 Activiti API,如何使用 Spring 集成 Activiti 等。 此外,该书还包含了一些高级的话题,如如何自定义 Activiti 服务、如何在 Activiti 中使用规则引擎和消息中间件等,这些内容对于需要深入了解 Activiti 的开发人员来说具有很大的价值。 总之,Activiti 实战 PDF 对于掌握 Activiti 工作流引擎的开发人员和架构师来说是一本非常实用的实践指南,它不仅能够帮助读者掌握 Activiti 的基本概念和使用方法,还能够帮助他们实现更加复杂的工作流场景。 ### 回答3: Activiti 实战 PDF 是一本关于 Activiti 工作流引擎的实战指南,主要面向开发者和系统管理员,并以实际案例为基础,介绍了 Activiti 的核心概念、基本流程的构建以及高级特性等内容。 本书由熟悉 Activiti 的领域专家撰写,详细介绍了 Activiti 的工作原理、配置和使用方式。其中涵盖了多种流程设计方法,包括界面设计、BPMN 规范和 XML 定义等,并结合实际案例演示了如何使用 Activiti 构建自定义流程应用。 此外,本书还阐述了 Activiti 中的用户、任务、表单、数据和事件等概念,以及如何使用 Activiti Explorer 管理和监控流程的运行与执行情况。最后,本书还介绍了使用 Activiti 进行流程自动化部署、管理与维护的技巧和方法。 总的来说,Activiti 实战 PDF 为初学者和高级用户提供了深入学习 Activiti 工作流引擎的最佳实践方法,帮助用户将其应用于实际开发项目中,提高工作效率和流程管理的可靠性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值