springbootactivity项目搭建的示例分析

这篇文章将为大家详细讲解有关spring boot activity 项目搭建的示例分析,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

我们提供的服务有:做网站、网站设计、微信公众号开发、网站优化、网站认证、班戈ssl等。为成百上千企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的班戈网站制作公司

spring boot activity 项目搭建

初始化一个spring boot 项目 

maven 只要上面一个就可以了 activiti-spring-boot-starter-basic ,下面两个是 rest 请求和 protometheus 统计数据用的

  
        6.0.0
    
        
            org.activiti
            activiti-spring-boot-starter-basic
            ${activiti.version}
        
        
       
           org.activiti-->
           activiti-spring-boot-starter-rest-api-->
           ${activiti.version}-->
       

       
           org.activiti-->
           activiti-spring-boot-starter-actuator-->
           ${activiti.version}-->
       

修改启动文件和 application.yml

启动文件上排除 @SpringBootApplication(exclude = org.activiti.spring.boot.SecurityAutoConfiguration.class)

application.yml 注意 datasource.url 要加&nullCatalogMeansCurrent=true ,项目启动时数据库表会自动建立

spring:
  activiti:
    database-schema-update: true
    job-executor-activate: true # asyncExecutorEnabled属性设置设置true后将代替那些老的Job executor
    history-level: full
    db-history-used: true
    check-process-definitions: true # 自动部署验证设置:true-开启(默认)、false-关闭  
 datasource:
   driver-class-name: com.MySQL.cj.jdbc.Driver
   password:  
   url: jdbc:mysql:///?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true
   username:

其他idea plugins 中寻找安装 actiBPM 插件 , restart idea

备注:idea 乱码解决方案 :点击 idea->help 菜单->edit Custome Vm Option 菜单 ,增加一行 -Dfile.encoding=UTF-8 重启即可解决乱码

在resource 目录下建立 processes 文件夹 ,右键文件夹新建*.bpmn 文件 可以画流程图 (spring boot bpmn 默认读取路径是 resource/processes/) 类似: start ->server_task->user_task->end 四个简单的流程图

新建测试用例

startProcessInstanceByKey(key), resource/processes/key.bpmn 。 key.bpmn 后缀改为xml 修改xml中的process id="key"

 @RunWith(SpringJUnit4ClassRunner.class)
 @SpringBootTest
 public class activitTest {
 
     @Autowired
     private RuntimeService runtimeService;
 
     @Autowired
     private TaskService taskService;
 
     @Test
     @Deployment
     public void simpleProcessTest() {
        runtimeService.startProcessInstanceByKey("myProcess_1");
 
         Task task = taskService.createTaskQuery().singleResult();
         taskService.complete(task.getId());
     }
 
     @Test
     public  void queryProcessList(){
         ProcessInstanceQuery query = runtimeService.createProcessInstanceQuery().processDefinitionKey("myProcess_1");
         List list = query.list();
         System.out.println(list.size());
         list.forEach(e->{
             Task task = taskService.createTaskQuery().processInstanceId(e.getProcessInstanceId()).singleResult();
             taskService.complete(task.getId());
         });
     }
 }

上面已经可以跑起来了

为了和我们的业务联合起来 需要新建service

相应的流程图要调用下面的两个方法

start ->server_task->user_task->end 四个简单的流程图

server_task 加 activiti:expression="#{bootTestService.begin(execution)}" || server_task 在流程图上 改type=expression value=#{bootTestService.begin(execution)} 表示监听

user_task 加 activiti:candidateUsers="${bootTestService.end()}" || user_task 在流程图上 改Candidate Users value=${bootTestService.end()}

备注:事件监听是以#开头

@Service
public class BootTestService {
    public void begin(DelegateExecution execution){
        System.out.println("begint");
        System.out.println(execution.getCurrentActivityId());
        System.out.println(execution.getEventName());
        System.out.println(execution.getTenantId());
    }

    public List end(){
        System.out.println("end");
        return Arrays.asList("hello","hello");
    }
}

最终执行 单元测试 主要表结构如下

//部署表

act_re_procdef 字段 process_id 字段 DEPLOYMENT_ID_

act_re_deployment

act_ge_bytearray

act_ge_property

//任务表

act_hi_procinst process 实例表

act_hi_taskinst PROC_INST_ID_ 字段跟上表关联 EXECUTION_ID_ 与下表关联

act_hi_actinst 具体的步骤表

Activiti 7大服务介绍

TaskService :在 Activiti 中业务流程定义中的每一个执行节点被称为一个 Task,对流程中的数据存取,状态变更等操作均需要在 Task 中完成。 Task Service 提供了对用户 Task 和 Form 相关的操作。它提供了运行时任务查询、领取、完成、删除以及变量设置等功能。

RuntimeService:在 Activiti 中,每当一个流程定义被启动一次之后,都会生成一个相应的流程对象实例。Runtime Service 提供了启动流程、查询流程实例、 设置获取流程实例变量等功能。此外它还提供了对流程部署,流程定义和流程实例的存取服务。

RepositoryService :Activiti 中每一个不同版本的业务流程的定义都需要使用一些定义文件,部署文件和支持数据 ( 例如 BPMN2.0 XML 文件,表单定义文件, 流程定义图像文件等 ),这些文件都存储在 Activiti 内建的 Repository 中。Repository Service 提供了对 repository 的存取服务。

HistoryService :History Service 用于获取正在运行或已经完成的流程实例的信息,与 Runtime Service 中获取的流程信息不同,历史信息包含已经持久化存储的永久信息,并已经被针对查询优化。

FormService : Activiti 中的流程和状态 Task 均可以关联业务相关的数据。通过使用 Form Service 可以存取启动和完成任务所需的表单数据并且根据需要来渲染表单。

IdentityService :Activiti 中内置了用户以及组管理的功能,必须使用这些用户和组的信息才能获取到相应的 Task。Identity Service 提供了对 Activiti 系统中的用户和组的管理功能。

ManagementService : Management Service 提供了对 Activiti 流程引擎的管理和维护功能,这些功能不在工作流驱动的应用程序中使用,主要用于 Activiti 系统的日常维护。

Activiti使用到的表都是ACT_开头的。

  ACT_RE_*:  ’RE’表示repository(存储),RepositoryService接口所操作的表。带此前缀的表包含的是静态信息,如,流程定义,流程的资源(图片,规则等)。

  ACT_RU_*: ‘RU’表示runtime,运行时表-RuntimeService。这是运行时的表存储着流程变量,用户任务,变量,职责(job)等运行时的数据。Activiti只存储实例执行期间的运行时数据,当流程实例结束时,将删除这些记录。这就保证了这些运行时的表小且快。

  ACT_ID_*: ’ID’表示identity (组织机构),IdentityService接口所操作的表。用户记录,流程中使用到的用户和组。这些表包含标识的信息,如用户,用户组,等等。

  ACT_HI_*: ’HI’表示history,历史数据表,HistoryService。就是这些表包含着流程执行的历史相关数据,如结束的流程实例,变量,任务,等等

  ACT_GE_*: 全局通用数据及设置(general),各种情况都使用的数据。

序号 表名 说明

1 act_ge_bytearray 二进制数据表

2 act_ge_property 属性数据表存储整个流程引擎级别的数据,初始化表结构时,会默认插入三条记录,

3 act_hi_actinst 历史节点表

4 act_hi_attachment 历史附件表

5 act_hi_comment 历史意见表

6 act_hi_identitylink 历史流程人员表

7 act_hi_detail 历史详情表,提供历史变量的查询

8 act_hi_procinst 历史流程实例表

9 act_hi_taskinst 历史任务实例表

10 act_hi_varinst 历史变量表

11 act_id_group 用户组信息表

12 act_id_info 用户扩展信息表

13 act_id_membership 用户与用户组对应信息表

14 act_id_user 用户信息表

15 act_re_deployment 部署信息表

16 act_re_model 流程设计模型部署表

17 act_re_procdef 流程定义数据表

18 act_ru_event_subscr throwEvent、catchEvent时间监听信息表

19 act_ru_execution 运行时流程执行实例表

20 act_ru_identitylink 运行时流程人员表,主要存储任务节点与参与者的相关信息

21 act_ru_job 运行时定时任务数据表

22 act_ru_task 运行时任务节点表

23 act_ru_variable 运行时流程变量数据表

关于spring boot activity 项目搭建的示例分析就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。


当前名称:springbootactivity项目搭建的示例分析
分享路径:http://myzitong.com/article/jcjech.html