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发来和回传
。眼睛干涩是什么病因怎么治疗骨关节炎吃什么消炎药
宝宝积食怎么办如何消食
除皱面膜
哪些人不适合跳健身操
人干扰素
缓解支气管炎咳嗽的方法
眼睛酸痛滴什么眼药水好
怎么补充眼部营养让视力变好
经常熬夜喝酒抽烟肝不好怎么办
上一篇: 普京的背叛
-
尾盘:美股小幅持续上升 道指上涨100点
对话,以确保稳定的全球性太阳能原材料。话题个股迪克体育用品星期四披露2021年四本季绩效,截至1年底29日,每股收益为3.64美元,高于去年的2.43美元以及Capital IQ德意志