前言
good good study, day day up
介绍
activiti的内容核心主题大概都与他提供的几个类有关,我们的后续学习也基本上离不开他们....
RepositoryService ...
RuntimeService...
TaskService...
HistoryService...
部署
创建一个如下图简单的bpmn文件
部署方式一 :
@Autowired
private RepositoryService repositoryService;
/**
* 部署方式一:
* 这里直接以现有资源的方式进行部署
*/
public void deployActivitiInfo() {
Deployment deploy = this.repositoryService.createDeployment()
.addClasspathResource("activiti/simple/holiday.bpmn") // bpmn文件
.addClasspathResource("activiti/simple/holiday.png") // 图片文件
.name("简单的请假流程")
//.key("")
//.category("")
.deploy();
logger.info("流程名称: {}", deploy.getName());
logger.info("流程部署ID: {}", deploy.getId());
}
至此,这种方式就算是部署成功了...
影响的表: act_ge_bytearray 存储了部署的一些Blob数据 act_re_deployment 以及 act_re_procdef 流程部署的信息
倘若设置不使用uuid的话,可以在yaml的activi的配置下加上下面这个配置
use-strong-uuids: false
// 输出结果
// 流程名称: 简单的请假流程
// 流程部署ID: 1
部署方式二:
/**
* 部署方式二:
* 以压缩包流的形式进行部署
* @throws Exception
*/
public void deployActivitiInfoByZip() throws Exception{
InputStream is = ActivitiDeploymentService.class
.getClassLoader().getResourceAsStream("activiti/simple/zip/holiday.zip");
ZipInputStream zipInputStream = new ZipInputStream(is);
Deployment deploy = this.repositoryService.createDeployment()
.addZipInputStream(zipInputStream)
//.key("")
//.category("")
.name("压缩包部署形式的流程部署")
.deploy();
logger.info("压缩部署的流程名称: {}", deploy.getName());
logger.info("压缩的流程部署ID: {}", deploy.getId());
}
## 输出结果
Process deployed: {id: myProcess_1:2:2504, key: myProcess_1, name: null }
压缩部署的流程名称: 压缩包部署形式的流程部署
压缩的流程部署ID: 2501
部署方式三
直接以流的形式进行部署,这里就不多赘述了...
查询
/**
* 查询已经部署的流程信息
*/
public void searchDeploymentActivitiInfo() {
List<Deployment> deploymentList = this.repositoryService.createDeploymentQuery().list();
logger.error("查询已经部署的流程信息: {}", deploymentList);
if (deploymentList != null && !deploymentList.isEmpty()) {
for (Deployment deploymentItem : deploymentList) {
logger.error("---------------------------------------------");
logger.error("deploymentInfo is {}", deploymentItem);
logger.error("部署ID: {}", deploymentItem.getId());
logger.error("部署名称: {}", deploymentItem.getName());
logger.error("部署分类: {}", deploymentItem.getCategory()); //null
logger.error("部署时间: {}", deploymentItem.getDeploymentTime());
logger.error("部署TenantId: {}", deploymentItem.getTenantId());
logger.error("---------------------------------------------");
//设置(设置其中一个)
if ("1".equals(deploymentItem.getId())) {
this.repositoryService
.setDeploymentCategory(deploymentItem.getId(), "holiday");
} else {
this.repositoryService
.setDeploymentKey(deploymentItem.getId(), "zip_holiday");
}
}
}
//采用Category 以及key查询
long holidayCountByCategory = this.repositoryService.createDeploymentQuery().deploymentCategory("holiday").count();
logger.error("holidayCountByCategory is {}", holidayCountByCategory);
//采用key查询
long zip_holiday_count = this.repositoryService.createDeploymentQuery().deploymentKey("zip_holiday").count();
logger.error("zip_holiday_count is {}", zip_holiday_count);
}
## 输出结果
查询已经部署的流程信息: [DeploymentEntity[id=1, name=简单的请假流程], DeploymentEntity[id=2501, name=压缩包部署形式的流程部署]]
---------------------------------------------
deploymentInfo is DeploymentEntity[id=1, name=简单的请假流程]
部署ID: 1
部署名称: 简单的请假流程
部署分类: null
部署时间: Sun Nov 29 11:04:15 CST 2020
部署TenantId:
---------------------------------------------
---------------------------------------------
deploymentInfo is DeploymentEntity[id=2501, name=压缩包部署形式的流程部署]
部署ID: 2501
部署名称: 压缩包部署形式的流程部署
部署分类: null
部署时间: Sun Nov 29 11:21:43 CST 2020
部署TenantId:
---------------------------------------------
holidayCountByCategory is 1
zip_holiday_count is 1
删除
/**
* 流程的删除
*/
public void removeDeploymentActivitiInfo() {
Deployment deploymentInfo = this.repositoryService.createDeploymentQuery().deploymentKey("zip_holiday").singleResult();
if (deploymentInfo != null) {
//this.repositoryService.deleteDeployment(deploymentInfo.getId());
/**
* 如果不想删除正在执行的实例,不需要调用原有的方法
* 摘自源码
* Deletes the given deployment and cascade deletion to process instances, history process instances and jobs.
* @param deploymentId id of the deployment, cannot be null.
*/
this.repositoryService.deleteDeployment(deploymentInfo.getId(), true);
}
}