zoukankan      html  css  js  c++  java
  • SpringBoot+Acyiviti

    1.IDEA画BPMN图后转成XML,文字乱码修改文字生成PNG图片,XML改回BPMN格式,进行部署

    public void deploy() {
    repositoryService.createDeployment().name("myProcess_1").addClasspathResource("processes/activiti_1.bpmn").deploy();
    }
     报错:Activiti MalformedByteSequenceException: 3 字节的 UTF-8 序列的字节 3 无效。
     解决:将BPMN复制出来用notepad++转码UTF-8保存放回。

    2.发起流程:

    public void startProcess(){
    String processDefiKey="myProcess_1";//bpmn 的 process标签的id属性
    processEngine.getIdentityService().setAuthenticatedUserId("initiator_1");
    ProcessInstance pi = processEngine.getRuntimeService().startProcessInstanceByKey(processDefiKey);

    System.out.println("流程实例的id:"+pi.getProcessInstanceId());//ProcessInstance 对象
    System.out.println("流程定义的id:"+pi.getProcessDefinitionId());//默认执行的是最新版本的流程定义
    }
    报错: Error creating bean with name 'org.activiti.spring.boot.SecurityAutoConfiguration': Initialization of bean failed; nested exception is java.lang.ArrayStoreException: sun.reflect.annotation.TypeNotPresentExceptionProxy
    解决:SpringBoot启动类加上@SpringBootApplication(exclude = SecurityAutoConfiguration.class) ,activiti-spring-boot-starter-basic.jar包含spring-boot-starter-security

    3.查询正在运行的任务

    public void queryTask(){
    //任务的办理人
    String assignee="长颈鹿";
    //创建一个任务查询对象
    TaskQuery taskQuery = processEngine.getTaskService().createTaskQuery();
    List<Task> list = taskQuery.taskAssignee(assignee).list();
    //遍历任务列表
    if(list!=null&&list.size()>0){
    for(Task task:list){
    System.out.println("任务的办理人:"+task.getAssignee());
    System.out.println("任务的id:"+task.getId());
    System.out.println("任务的名称:"+task.getName());
    }
    }
    }
    4.完成任务

    public void compileTask(){
    String taskId="2506";//act_ru_task表id列
    processEngine.getTaskService().complete(taskId);
    }

    5.历史流程查询
    //历史流程实例
    public void queryHistoryProcInst(){
    List<HistoricProcessInstance> list = processEngine.getHistoryService()
    .createHistoricProcessInstanceQuery().processInstanceId("2501").list();
    if(list!=null&&list.size()>0){
    for(HistoricProcessInstance temp:list){
    System.out.println("历史流程实例id:"+temp.getId());
    System.out.println("历史流程定义的id:"+temp.getProcessDefinitionId());
    System.out.println("历史流程实例开始时间--结束时间:"+temp.getStartTime()+"-->"+temp.getEndTime());
    }
    }
    }
    //历史任务实例
    public void queryHistoryProcInst(){
    String processInstanceId="2501";
    List<HistoricTaskInstance> list = processEngine.getHistoryService()
    .createHistoricTaskInstanceQuery().processInstanceId(processInstanceId).list();
    if(list!=null&&list.size()>0){
    for(HistoricTaskInstance temp:list){
    System.out.print("历史流程实例任务id:"+temp.getId());
    System.out.print("历史流程定义的id:"+temp.getProcessDefinitionId());
    System.out.print("历史流程实例任务名称:"+temp.getName());
    System.out.println("历史流程实例任务处理人:"+temp.getAssignee());
    }
    }
    }

    6.删除流程
    public void deleteProcessDefi(){
    String deploymentId="faefcc49-c3bf-11e9-ad7f-7c2a31635b29";
    processEngine.getRepositoryService().deleteDeployment(deploymentId);
    }

    依赖
    <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.5.RELEASE</version>
    <relativePath /> <!-- lookup parent from repository -->
    </parent>

    <dependencies>
    <!-- https://mvnrepository.com/artifact/org.activiti/activiti-spring-boot-starter-basic -->
    <dependency>
    <groupId>org.activiti</groupId>
    <artifactId>activiti-spring-boot-starter-basic</artifactId>
    <version>6.0.0</version>
    </dependency>

    <dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <scope>runtime</scope>
    </dependency>

    <dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.0.0</version>
    </dependency>

    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
    </dependency>
    </dependencies>

    配置
    spring:
    jpa:
    hibernate:
    ddl-auto: update
    database: MYSQL
    show-sql: true
    datasource:
    url: jdbc:mysql://localhost:3306/demo?serverTimezone=GMT%2B8
    username: ***
    password: ***
    driver-class-name: com.mysql.cj.jdbc.Driver
    activiti:
    check-process-definitions: false

    mybatis:
    typeAliasesPackage: demo.entity
    mapperLocations: classpath:mappers/*.xml

    表功能解释

    日志表:
    1. act_evt_log                        存储事件处理日志,方便管理员跟踪处理。
    通用数据表
    2. act_ge_bytearray               二进制数据表,一些文件存在这个表。
    3. act_ge_property                属性数据表存储整个流程引擎级别的数据,初始化表结构时,会默认插入三条记录
    历史数据表
    4. act_hi_actinst                    历史节点表
    5. act_hi_attachment             历史附件表
    6. act_hi_comment                历史意见表
    7. act_hi_detail                      历史详情表,提供历史变量的查询
    8. act_hi_identitylink              历史流程人员表
    9. act_hi_procinst                  历史流程实例表
    10.act_hi_taskinst                 历史任务实例表
    11.act_hi_varinst                   历史变量表
    用户组织表
    12.act_id_group                    用户组信息表
    13.act_id_info                       用户扩展信息表
    14.act_id_membership         用户与用户组对应信息表
    15.act_id_user                      用户信息表
    资源流程规则表
    16.act_procdef_info              流程定义信息
    17.act_re_deployment          部署信息表
    18.act_re_model                   流程设计模型部署表
    19.act_re_procdef                 流程定义数据表  
    运行时数据库表
    20.act_ru_event_subscr       监听表
    21.act_ru_execution             运行时流程执行实例表
    22.act_ru_identitylink           运行时流程人员表,主要存储任务节点与参与者的相关信息
    23.act_ru_job                       运行时定时任务数据表
    24.act_ru_task                     运行时任务节点表
    25.act_ru_variable               运行时流程变量数据表

    BPMN流程图相关:
    1.候选人/候选组(candidate):可以执行任务的一类人或者多个组,候选人/候选组中都可以去签收任务,一旦某人签收,就成为受理人,其他人就不能再签收受理此任务;usertask流程图中,candidate标示候选;候选人涉及的表ACT_RU_IDENTITYLINK;
    2.受理人(assignee):有两种情况,一种是候选人/组中有人签收任务后成为受理人,另外一种是流程图中直接指定受理人,但是可以指定一个动态受理人;受理人涉及的表ACT_RU_TASK;
    3.持有人(owner):持有人设置主要是存入历史表中,用于历史任务的查询,涉及的表ACT_HI_TASKINST

  • 相关阅读:
    2018年产品设计协作领域最强黑马居然是它?
    中小企业网页设计,轻松拓展网络市场
    那些年,UI设计师还在手工标注和切图时走的弯路
    据说,攻城狮也可以像设计狮一样切图了?
    拼图类APP原型模板分享——简拼
    UI设计初学者必看,这款设计神器教你快速入门
    设计交付指南:设计师与开发如何才能好好协作?
    用户体验设计师面试中可能会问及的10个高频问题
    产品,设计和开发,高效协同只差一份文档
    素数
  • 原文地址:https://www.cnblogs.com/god-monk/p/11389892.html
Copyright © 2011-2022 走看看