当前位置:首页 >> 安全

ja开发新之SpringBoot+flowable实现工作流

来源:安全   2025年05月25日 12:45

>

username: root

password: 123456

的资讯库

1、Flowable的所有的资讯库详见都以ACT_开头。第二外是说明详见用途的两字节标示符。维修服务API的命名也大体上不符这个法则。

2、ACT_RE_: 'RE’代详见repository。带有这个词四组的详见构成“可执行”的资讯,例如程序当中并不一定与程序当中资源(视频、法则等)。

3、ACT_RU_: 'RU’代详见runtime。这些详见加载运营时的资讯,例如程序当中程序中(process instance)、Gmail护航(user task)、参数(variable)、厂内(job)等。Flowable只在程序当中程序中运营当中保存运营时的资讯,并在程序当中程序中中止时封禁记录留下来。这样保证运营时详见小和快。

4、ACT_HI_: 'HI’代详见history。这些详见加载在历史上的资讯,例如已顺利完成的程序当中程序中、参数、护航等。

5、ACT_GE_: 通用的资讯。在近百用到。

1)通用的资讯详见(2个)

act_ge_bytearray:二进制的资讯详见,如程序当中并不一定、程序当中COM、程序当中图的二进制漂文档; act_ge_property:属性的资讯详见(不会用);

2)在历史上详见(8个,HistoryService广泛应用程序转换的详见)

act_hi_actinst:在历史上路由器详见,储藏程序当中程序中运转的各个路由器的资讯(构成开始、中止等非护航路由器); act_hi_attachment:在历史上参考资料详见,储藏在历史上路由器上传的参考资料的资讯(不会用); act_hi_comment:在历史上意愿详见; act_hi_detail:在历史上以下内容详见,加载路由器运转的一些的资讯(不会用); act_hi_identitylink:在历史上程序当中医护人员详见,加载程序当中各路由器候选、承办医护人员的资讯,会可用查看某人或政府部门的已办护航; act_hi_procinst:在历史上程序当中程序中详见,加载程序当中程序中在历史上的资讯(构成打算运营的程序当中程序中); act_hi_taskinst:在历史上程序当中护航详见,加载在历史上护航路由器; act_hi_varinst:程序当中在历史上参数详见,加载程序当中在历史上路由器的参数的资讯;

3)Gmail系统性详见(4个,IdentityService广泛应用程序转换的详见)

act_id_group:该协会的资讯详见,相同路由器选定候选四组的资讯; act_id_info:Gmail扩展的资讯详见,加载Gmail扩展的资讯; act_id_membership:Gmail与该协会关系详见; act_id_user:Gmail的资讯详见,相同路由器选定承办人或初选的资讯;

4)程序当中并不一定、程序当中COM系统性详见(3个,RepositoryService广泛应用程序转换的详见)

act_re_deployment:部属的资讯详见,加载程序当中并不一定、COM下旬的资讯; act_re_procdef:程序当中并不一定的资讯详见,加载程序当中并不一定系统性描述的资讯,但其似乎内容可加载在act_ge_bytearray详见当中,以二进制表达方式加载; act_re_model:程序当中COM的资讯详见,加载程序当中COM系统性描述的资讯,但其似乎内容可加载在act_ge_bytearray详见当中,以二进制表达方式加载;

5)程序当中运营时详见(6个,RuntimeService广泛应用程序转换的详见)

act_ru_task:运营时程序当中护航路由器详见,加载运营当中程序当中的护航路由器的资讯,关键性,会可用查看医护人员或政府部门的待办护航时用到; act_ru_event_subscr:的资讯详见,不会用; act_ru_execution:运营时程序当中继续执行程序中详见,记录留下来运营当中程序当中运营的各个分支的资讯(当没有人子程序当中时,其的资讯与act_ru_task详见的资讯是一一相同的); act_ru_identitylink:运营时程序当中医护人员详见,关键性,会可用查看医护人员或政府部门的待办护航时用到; act_ru_job:运营时时才会护航的资讯详见,加载程序当中的时才会护航的资讯; act_ru_variable:运营时程序当中参数的资讯详见,加载运营当中的程序当中各路由器的参数的资讯;

程序当中涡轮引擎API与维修服务

涡轮引擎API是与Flowable交互的最会用手段。总正对面点是ProcessEngine。

1、RepositoryService很似乎是用到Flowable涡轮引擎会用的第一个维修服务。这个维修服务提供了管理岗位与控制下旬(deployments)与程序当中并不一定(process

definitions)的转换。管理岗位可执行的资讯, 2、RuntimeService可用关机程序当中并不一定的取而代之程序当中程序中。

3、IdentityService很直观。它可用管理岗位(创始人,更取而代之,封禁,查看……)四组与Gmail。

4、FormService是可选维修服务。意味著Flowable没有人它也能更好地运营,而不必牺牲任何功能。

5、HistoryService去除Flowable涡轮引擎收集的所有在历史上的资讯。要提供查看在历史上的资讯的潜能。

6、ManagementService上会在用Flowable撰写Gmail广泛应用时不无需用到。它可以读写的资讯库详见与详见原始的资讯的的资讯,也提供了对厂内(job)的查看与管理岗位转换。

7、DynamicBpmnService可可用修改程序当中并不一定当中的外内容可,而不无需重取而代之下旬它。例如可以修改程序当中并不一定当中一个Gmail护航的承办人设置,或者修改一个维修服务护航当中的类名。

接留下来用到之前的请假程序当中图,上代码

代码

import lombok.extern.slf4j.Slf4j;

import org.flowable.engine.HistoryService;

import org.flowable.engine.RepositoryService;

import org.flowable.engine.RuntimeService;

import org.flowable.engine.history.HistoricProcessInstance;

import org.flowable.engine.repository.Deployment;

import org.flowable.engine.repository.ProcessDefinition;

import org.flowable.engine.runtime.Execution;

import org.flowable.engine.runtime.ProcessInstance;

import org.flowable.idm.api.Group;

import org.flowable.idm.api.User;

import org.flowable.task.api.Task;

import org.flowable.task.api.history.HistoricTaskInstance;

import org.springframework.beans.factory.annotation.Autowired;

import ja.io.File;

import ja.io.FileInputStream;

import ja.io.FileNotFoundException;

import ja.util.HashMap;

import ja.util.List;

import ja.util.Map;

import ja.util.zip.ZipInputStream;

/**

* TestFlowable

* @Author

* @Date: 2021/10/17 23:35

* @Version 1.0

*/

@Slf4j

public class TestFlowable {

@Autowired

private RepositoryService repositoryService;

@Autowired

private RuntimeService runtimeService;

@Autowired

private HistoryService historyService;

@Autowired

private org.flowable.engine.TaskService taskService;

@Autowired

private org.flowable.engine.IdentityService identityService;

public void createDeploymentZip() {

/*

* @Date: 2021/10/17 23:38

* Step 1: 下旬xml(填充到zip表达方式,并不需要xml无需备有相对路径,麻烦,原于不用)

*/

try {

File zipTemp = new File("f:/lee_approval.bpmn20.zip");

ZipInputStream zipInputStream = new ZipInputStream(new FileInputStream(zipTemp));

Deployment deployment = repositoryService

.createDeployment()

.addZipInputStream(zipInputStream)

.deploy();

log.info("下旬取得成功:{}", deployment.getId());

} catch (FileNotFoundException e) {

e.printStackTrace();

}

/*

* @Date: 2021/10/17 23:40

* Step 2: 查看下旬的程序当中并不一定

*/

List list = repositoryService.createProcessDefinitionQuery().processDefinitionKey("lee_approval").list();

List pages = repositoryService.createProcessDefinitionQuery().processDefinitionKey("lee_approval").listPage(1, 30);

/*

* @Date: 2021/10/17 23:40

* Step 3: 关机程序当中,创始人程序中

*/

String processDefinitionKey = "lee_approval";//程序当中并不一定的key,相同请假的程序当中图

String businessKey = "schoollee";//业务范围代码,根据自己的业务范围用

Map variablesDefinition = new HashMap<>();//程序当中参数,可以自并不一定扩充

ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(processDefinitionKey, businessKey, variablesDefinition);

log.info("关机取得成功:{}", processInstance.getId());

/*

* @Date: 2021/10/17 23:40

* Step 4: 查看指定程序当中所有关机的程序中列详见

* 列详见,或 分页 封禁

*/

List executions = runtimeService.createExecutionQuery().processDefinitionKey("lee_approval").list();

List executionPages = runtimeService.createExecutionQuery().processDefinitionKey("lee_approval").listPage(1, 30);

// runtimeService.deleteProcessInstance(processInstanceId, deleteReason); //封禁程序中

/*

* @Date: 2021/10/17 23:40

* Step 5: 讲授生查看可以转换的护航,并顺利完成护航

*/

String candidateGroup = "stu_group"; //候选四组 xml文档底下的 flowable:candidateGroups="stu_group"

List taskList = taskService.createTaskQuery().taskCandidateGroup(candidateGroup).orderByTaskCreateTime().desc().list();

for (Task task : taskList) {

// 申领护航

taskService.claim(task.getId(), "my");

// 顺利完成

taskService.complete(task.getId());

}

/*

* @Date: 2021/10/17 23:40

* Step 6: 导师查看可以转换的护航,并顺利完成护航

*/

String candidateGroupTe = "te_group"; //候选四组 xml文档底下的 flowable:candidateGroups="te_group"

List taskListTe = taskService.createTaskQuery().taskCandidateGroup(candidateGroupTe).orderByTaskCreateTime().desc().list();

for (Task task : taskListTe) {

// 申领护航

taskService.claim(task.getId(), "myte");

// 顺利完成

Map variables = new HashMap<>();

variables.put("command","agree"); //装载参数,可用网关程序当中的先决条件确定,这里的先决条件是同意

taskService.complete(task.getId(), variables);

}

/*

* @Date: 2021/10/18 0:17

* Step 7: 在历史上查看,因为一旦程序当中继续执行完毕,活动的的资讯都会被移去,右边查看的广泛应用程序都查不到的资讯,但是提供在历史上查看广泛应用程序

*/

// 在历史上程序当中程序中

List historicProcessList = historyService.createHistoricProcessInstanceQuery().processDefinitionKey("lee_approval").list();

// 在历史上护航

List historicTaskList = historyService.createHistoricTaskInstanceQuery().processDefinitionKey("lee_approval").list();

// 程序中在历史上参数 , 护航在历史上参数

// historyService.createHistoricVariableInstanceQuery().processInstanceId(processInstanceId);

// historyService.createHistoricVariableInstanceQuery().taskId(taskId);

// *****************************************************逗号********************************************************************

// *****************************************************逗号********************************************************************

// 似乎还无需的API

// 快速移动护航,人为跳转护航

// runtimeService.createChangeActivityStateBuilder().processInstanceId(processInstanceId)

// .moveActivityIdTo(currentActivityTaskId, newActivityTaskId).changeState();

// 如果在的资讯库备有了第一四组和Gmail,还会用到

List users = identityService.createUserQuery().list(); //Gmail查看,Gmailid相同xml 底下备有的Gmail

List groups = identityService.createGroupQuery().list(); //第一四组查看,第一四组id相同xml 底下备有的第一四组 如 stu_group,te_group 在详见里是id的差值

// 另外,每个查看右边都可以合先决条件,内置恁多查看,包括模糊查看,大小比较都有

}

}

文章来源Ja面试那些事儿

推荐阅读:

SpringBoot实现防范管理岗位

SpringBoot利用Actuator来防范广泛应用的步骤

Springboot如何用到Aspect来实现切面记事

ja开发之SpringBoot发来和回传

眼睛干涩是什么病因怎么治疗
骨关节炎吃什么消炎药
宝宝积食怎么办如何消食
除皱面膜
哪些人不适合跳健身操
人干扰素
缓解支气管炎咳嗽的方法
眼睛酸痛滴什么眼药水好
怎么补充眼部营养让视力变好
经常熬夜喝酒抽烟肝不好怎么办
友情链接