栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Activit7的使用

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Activit7的使用

目录

1.准备环境

1.1添加依赖

1.2添加配置文件

1.2.1 activiti.cfg.xml 配置文件

1.2.2 log4j.properties 日志配置文件

1.3 初设化代码,初始表

2.绘制流程图

3.部署流程

4.启动流程实例

5.查询待办任务

6.执行任务


1.准备环境

1.1添加依赖

1.2添加配置文件

1.2.1 activiti.cfg.xml 配置文件

在resource目录下添加activiti.cfg.xml配置文件,注意名字不能变.配置如下:




    
    
        
        
        
        
    
    
    
        
        
        
        
    

1.2.2 log4j.properties 日志配置文件
# 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 - %mn
# LOGFILE is set to be a File appender using a PatternLayout.
# 输出日志文件
log4j.appender.LOGFILE=org.apache.log4j.FileAppender
log4j.appender.LOGFILE.File=./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 - %mn

1.3 初设化代码,初始表

ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
默认创建25张表,不需要我们主动的操作,Activiti提供很多的API.
具体API分类
        RepositoryService        Activiti的资源管理接口  
        RuntimeService            Activiti的流程运行管理接口
        TaskService                    Activiti的任务管理接口  
        HistoryService                Activiti的历史管理接口  

2.绘制流程图

- 安装流程设计插件  ===>idea默认只支持2019版本以下.
- 解决中文乱码问题

3.部署流程
//获取流程引擎对象
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
//获取仓库的 Service    资源管理API
RepositoryService repositoryService = processEngine.getRepositoryService();
//调用API完成部署的动作
Deployment deploy = repositoryService.createDeployment()         //创建部署对象
         .addClasspathResource("bpmn/leaveProcess.bpmn")      //需要部署什么资源文件
         .addClasspathResource("bpmn/leaveProcess.png")      //需要部署什么资源文件
         .deploy();//进行部署
   //数据最终存储到 act_ge_bytearray,act_re_procdef
   //流程文件中的ID最终存储到 act_re_procdef 中Key字段 

4.启动流程实例
//获取流程引擎对象
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
// 获取运行时 Service
RuntimeService runtimeService = processEngine.getRuntimeService();
//启动流程      流程实例 processInstance   //untimeService.startProcessInstanceByKey("流程的Key")
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("leaveProcess");
        System.out.println(processInstance.getId());

5.查询待办任务
		//获取流程引擎对象
        ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
        //获取任务 Service
        TaskService taskService = processEngine.getTaskService();
        //指定用户的待办任务
		//String userId = "张三";
        String userId = "李四";
        // taskService.createTaskQuery() 等价于  select * from act_run_task
        // taskService.createTaskQuery().taskAssignee(userId) 等价于  select * from act_run_task where assignee = '张三'
        // singleResult()  只返回一条记录
        // list  返回集合
        // listPage 返回分页集合
        //.processDefinitionKey("leaveProcess")  只查询这个流程图
		//这样是添加过滤条件  select * from act_ru_task where definitionKey = 'leaveProcess' and assignee=''
		//进行查询,在Activiti中,所有的查询都是类似方法   xxxService.createxxxQuery();
        List taskList = taskService.createTaskQuery()
                .processDefinitionKey("leaveProcess")
                .taskAssignee(userId)
                .list();
        for (Task task : taskList) {
            System.out.println("任务ID:"+task.getId());
            System.out.println("任务名称:"+task.getName());
            System.out.println("任务创建时间: "+task.getCreateTime());
            System.out.println("任务处理人: "+task.getAssignee());
            System.out.println("流程实例ID: "+task.getProcessInstanceId());
        }

6.执行任务

没有批注信息

//        获取流程引擎对象
        ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
        // 获取任务的 Service
        TaskService taskService = processEngine.getTaskService();
		//任务 ID
        String taskId = "2505";
        taskService.complete(taskId);

有批注信息

//获取流程引擎对象
        ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
        // 获取任务的 Service
        TaskService taskService = processEngine.getTaskService();
        //给任务添加批注信息
        //任务 ID
        String taskId = "5002";
        // 流程实例 ID
        String processInstanceId = "2501";
//添加批注信息 taskService.addComment(taskId,processInstanceId,"批注内容")
        taskService.addComment(taskId,processInstanceId,"允许休假!");
        //完成任务
        taskService.complete(taskId);

后续在 Activit7的使用 2 中

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/724316.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号