流程定义和部署管理——流程定义列表
2015-04-21 00:22
393 查看
流程定义列表
spring mvc的请求相对路径为:workflow/process-list
注入RepositoryService,它管理发布资源的所有方法:
protected RepositoryService repositoryService;
要点:
1、查询流程定义
其中listPage方法后才真正执行数据库查询,在mysql中如下sql:
关于流程部署,这个地方有几个比较重要的概念:
bpmn里有<process id="leave" name="请假流程">
KEY_对应的是bpmn里process id;(经常作为查询条件使用,不要和ID_混淆)
NAME_对应的是bpmn里process name;
VERSION_对应的是部署的版本号,因为这里spring自动部署了两次,所以同一个流程定义,版本号有1和2,以后默认会读版本号大的;
ID_是一个组合,NAME_ + VERSION_ + DEPLOYMENT_ID_;
2、关联查询流程部署
在mysql中执行如下sql:
3、返回给页面的是
4、页面代码
从ProcessDefinition类的对象中得到流程定义的id、deploymentId、name、key、version、suspended;
从Deployment类的对象中得到流程部署的deploymentTime;
后续我们再介绍基于这个列表的一些操作,包括:查看流程的xml,图片,以及部署流程的激活、挂起、删除等操作。。。
spring mvc的请求相对路径为:workflow/process-list
注入RepositoryService,它管理发布资源的所有方法:
protected RepositoryService repositoryService;
/** * 流程定义列表 * * @return */ @RequestMapping(value = "/process-list") public ModelAndView processList(HttpServletRequest request) { ModelAndView mav = new ModelAndView("workflow/process-list"); /* * 保存两个对象,一个是ProcessDefinition(流程定义),一个是Deployment(流程部署) */ List<Object[]> objects = new ArrayList<Object[]>(); Page<Object[]> page = new Page<Object[]>(PageUtil.PAGE_SIZE); int[] pageParams = PageUtil.init(page, request); ProcessDefinitionQuery processDefinitionQuery = repositoryService.createProcessDefinitionQuery().orderByDeploymentId().desc(); List<ProcessDefinition> processDefinitionList = processDefinitionQuery.listPage(pageParams[0], pageParams[1]); for (ProcessDefinition processDefinition : processDefinitionList) { String deploymentId = processDefinition.getDeploymentId(); Deployment deployment = repositoryService.createDeploymentQuery().deploymentId(deploymentId).singleResult(); objects.add(new Object[]{processDefinition, deployment}); } page.setTotalCount(processDefinitionQuery.count()); page.setResult(objects); mav.addObject("page", page); return mav; }
要点:
1、查询流程定义
ProcessDefinitionQuery processDefinitionQuery = repositoryService.createProcessDefinitionQuery().orderByDeploymentId().desc(); List<ProcessDefinition> processDefinitionList = processDefinitionQuery.listPage(pageParams[0], pageParams[1]); for (ProcessDefinition processDefinition : processDefinitionList) {}
其中listPage方法后才真正执行数据库查询,在mysql中如下sql:
SELECT DISTINCT RES.* FROM ACT_RE_PROCDEF RES ORDER BY RES.DEPLOYMENT_ID_ DESC LIMIT 15 OFFSET 0结果:
关于流程部署,这个地方有几个比较重要的概念:
bpmn里有<process id="leave" name="请假流程">
KEY_对应的是bpmn里process id;(经常作为查询条件使用,不要和ID_混淆)
NAME_对应的是bpmn里process name;
VERSION_对应的是部署的版本号,因为这里spring自动部署了两次,所以同一个流程定义,版本号有1和2,以后默认会读版本号大的;
ID_是一个组合,NAME_ + VERSION_ + DEPLOYMENT_ID_;
2、关联查询流程部署
String deploymentId = processDefinition.getDeploymentId(); Deployment deployment = repositoryService.createDeploymentQuery().deploymentId(deploymentId).singleResult();
在mysql中执行如下sql:
SELECT DISTINCT RES.* FROM ACT_RE_DEPLOYMENT RES WHERE RES.ID_ = 1 ORDER BY RES.ID_ ASC LIMIT 2147483647 OFFSET 0结果:
3、返回给页面的是
List<Object[]> objects = new ArrayList<Object[]>(); objects.add(new Object[]{processDefinition, deployment}); page.setResult(objects); mav.addObject("page", page);
4、页面代码
<table width="100%" class="need-border"> <thead> <tr> <th>ProcessDefinitionId</th> <th>DeploymentId</th> <th>名称</th> <th>KEY</th> <th>版本号</th> <th>XML</th> <th>图片</th> <th>部署时间</th> <th>是否挂起</th> <th>操作</th> </tr> </thead> <tbody> <c:forEach items="${page.result }" var="object"> <c:set var="process" value="${object[0] }" /> <c:set var="deployment" value="${object[1] }" /> <tr> <td>${process.id }</td> <td>${process.deploymentId }</td> <td>${process.name }</td> <td>${process.key }</td> <td>${process.version }</td> <td><a target="_blank" href='${ctx }/workflow/resource/read?processDefinitionId=${process.id}&resourceType=xml'>${process.resourceName }</a></td> <td><a target="_blank" href='${ctx }/workflow/resource/read?processDefinitionId=${process.id}&resourceType=image'>${process.diagramResourceName }</a></td> <td>${deployment.deploymentTime }</td> <td>${process.suspended} | <c:if test="${process.suspended }"> <a href="processdefinition/update/active/${process.id}">激活</a> </c:if> <c:if test="${!process.suspended }"> <a href="processdefinition/update/suspend/${process.id}">挂起</a> </c:if> </td> <td> <a href='${ctx }/workflow/process/delete?deploymentId=${process.deploymentId}'>删除</a> <a href='${ctx }/workflow/process/convert-to-model/${process.id}'>转换为Model</a> </td> </tr> </c:forEach> </tbody> </table>
从ProcessDefinition类的对象中得到流程定义的id、deploymentId、name、key、version、suspended;
从Deployment类的对象中得到流程部署的deploymentTime;
后续我们再介绍基于这个列表的一些操作,包括:查看流程的xml,图片,以及部署流程的激活、挂起、删除等操作。。。
相关文章推荐
- 流程定义和部署管理——运行中的流程
- 传智播客oa学习,部署和管理流程定义
- 流程定义管理 流程部署
- 部署对象流程定义的管理
- Jbpm笔记之一 -- 流程定义管理( 部署和定义查询、删除、查看流程图)
- JBPM4.4:API风格、管理(部署、删除、更改、查询(文件资源、活动坐标))流程定义
- 流程定义和部署管理——激活、挂起
- Activiti基础教程--04管理流程定义(流程定义部署ZIP/classpath)、查看(获取流程定义图图片)、删除,不能修改
- 流程定义和部署管理——删除流程定义
- Activiti基础教程--04管理流程定义(流程定义部署ZIP/classpath)、查看(获取流程定义图图片)、删除,不能修改
- 流程定义和部署管理——部署
- 工作流学习——Activiti流程定义管理三步曲
- Activiti学习笔记四 流程定义的管理(一)
- atitit.研发管理--标准化流程总结---java开发环境与项目部署环境的搭建工具包总结
- Activiti第二篇【管理流程定义、执行任务和流程实例、流程变量】
- Trello:轻量级团队流程协作和列表管理平台[转自http://www.36kr.com/p/46852.html]
- Activiti学习笔记三:管理流程定义
- Activiti流程定义部署之ZIP方式
- 工作流学习——Activiti流程定义管理三步曲
- JBPM之流程定义管理,流程执行管理