作为一名人类高质量程序员,我对即将到来的国庆节表示无比的激动,也衷心祝福我的祖国生日快乐、繁荣昌盛。
上一篇博文已经成功整合流程设计器,对于流程的实现,变得轻松可达。本章内容将对Activiti的模型展开探究。
内容:1、实现模型列表分页查询并可以根据模型名称模糊匹配
Activiti引擎提供的7个服务完全可以满足对模型、流程、任务等信息的核查,但是在使用的时候,需要注意其用法,我曾掉进坑里,无法自拔。接下来的所有接口查询中,大鱼只展示实现层的代码。点火,开干!!!
@Override
public JsonResult list(Integer page, Integer size, String modelName) {
// 获取模型查询实例
ModelQuery modelQuery = repositoryService.createModelQuery();
// 根据模型名称模糊查询
Integer total;
List models;
if (StringUtils.isNotEmpty(modelName)) {
// 获取模型总数
total = (int) modelQuery.modelNameLike("%" + modelName + "%").count();
// 获取列表数据
models = modelQuery
.modelNameLike("%" + modelName + "%")
.orderByLastUpdateTime()
.desc()
.listPage((page - 1) * size, size);
} else {
// 获取模型总数
total = (int) modelQuery.count();
// 获取列表数据
models = modelQuery
.orderByLastUpdateTime()
.desc()
.listPage((page - 1) * size, size);
}
return models.size() > 0 ? JsonResult.success(total, models) : JsonResult.success(ResultCode.NO_DATA.getCode(), ResultCode.NO_DATA.getMessage());
}
(1)第一坑 模糊匹配
根据模型名称进行模糊匹配时,可以直接使用方法modelNameLike(),但如果直接将关键字填入其中,如:modelNameLike(key),是无法成功进行匹配的(这不知道是不是自己用法不对),将其拼接%符号即可实现此功能,如:modelNameLike("%" + key + "%")。
(2)第二坑 分页查询
分页查询可以使用listPage(int firstResult, int maxResults),但此方法中需要注意firstResult参数。原以为该参数就是pageNo(当前页),但不以为然,我错了,参数firstResult表示从第firstResult个起开始查询,而不是第firstResult页,这就造成了理解上的错误,所以实现分页,务必将firstResult参数的值改为:(page - 1)* size,page和size具体为当前页和页面容量。
(3)时间格式(这不算坑哈~_~)
该问题只需要在yml中进行简单的配置即可,如下:
spring:
jackson:
date-format: yyyy-MM-dd HH:mm:ss
time-zone: GMT+8
2、根据模型ID删除模型
public JsonResult delete(String modelId) {
try {
// 删除模型
repositoryService.deleteModel(modelId);
} catch (Exception e) {
e.printStackTrace();
return JsonResult.failure();
}
return JsonResult.success();
}



