首先增加两个Portlet,分别用于待办处理、流程启动。待办是别人发起的流程,流到自己这里的流程;流程启动用于发起新的流程。

程序文件放置于

在ACtivit中待办概念分两种,1是指派给你的,专门的指派流程节点;2是在候选组中,符合抢签权限的人。在代码中进行了合并:

  1. package com.lifiti.portlet;
  2.  
  3. import java.io.ByteArrayOutputStream;
  4. import java.io.IOException;
  5. import java.io.InputStream;
  6. import java.util.ArrayList;
  7. import java.util.List;
  8. import java.util.zip.ZipInputStream;
  9. import javax.portlet.ActionRequest;
  10. import javax.portlet.ActionResponse;
  11. import javax.portlet.Portlet;
  12. import javax.portlet.PortletException;
  13. import javax.portlet.RenderRequest;
  14. import javax.portlet.RenderResponse;
  15. import javax.servlet.http.HttpServletRequest;
  16. import javax.servlet.http.HttpServletResponse;
  17. import org.activiti.engine.repository.DeploymentBuilder;
  18. import org.activiti.engine.repository.ProcessDefinition;
  19. import org.activiti.engine.repository.ProcessDefinitionQuery;
  20. import org.activiti.engine.task.Task;
  21. import org.osgi.service.component.annotations.Component;
  22. import com.liferay.portal.kernel.exception.PortalException;
  23. import com.liferay.portal.kernel.servlet.ServletResponseUtil;
  24. import com.liferay.portal.kernel.theme.ThemeDisplay;
  25. import com.liferay.portal.kernel.upload.UploadPortletRequest;
  26. import com.liferay.portal.kernel.util.ParamUtil;
  27. import com.liferay.portal.kernel.util.PortalUtil;
  28. import com.liferay.portal.kernel.util.WebKeys;
  29. import com.lifiti.model.ToDo;
  30. import com.lifiti.util.ActivitiUtils;
  31. import com.lifiti.util.FilenameUtils;
  32. import com.lifiti.util.IdentifyHelper;
  33. import com.lifiti.util.ProcessHelper;
  34.  
  35. @Component(immediate = true, property = { "com.liferay.portlet.display-category=category.sample",
  36. "com.liferay.portlet.instanceable=true", "javax.portlet.display-name=Process ToDo",
  37. "javax.portlet.init-param.template-path=/", "javax.portlet.init-param.view-template=/process/processToDo.jsp",
  38. "javax.portlet.resource-bundle=content.Language",
  39. "javax.portlet.security-role-ref=power-user,user" }, service = Portlet.class)
  40.  
  41. public class ProcessToDoPortlet extends BpmBasePortlet {
  42. @Override
  43. public void render(RenderRequest request, RenderResponse response) throws PortletException, IOException {
  44.  
  45. ThemeDisplay td =(ThemeDisplay)request.getAttribute(WebKeys.THEME_DISPLAY);
  46. String candidateUser= td.getUser().getEmailAddress(); //IdentifyHelper.getUserFromSession(session).getId();
  47. System.out.println("candidateUser:"+candidateUser);
  48. try {
  49. System.out.println("getLogin:"+td.getUser().getLogin());
  50. } catch (PortalException e) {
  51. // TODO Auto-generated catch block
  52. e.printStackTrace();
  53. }
  54. System.out.println("getUserId:"+td.getUser().getUserId());
  55. System.out.println("getUserUuid:"+td.getUser().getUserUuid());
  56. System.out.println("getScreenName:"+td.getUser().getScreenName());
  57. // 执行查询
  58. List<Task> tasksCandidate = taskService.createTaskQuery()
  59. .taskCandidateUser(candidateUser)
  60. .orderByTaskCreateTime().desc().list();
  61. List<Task> tasksAssignee = taskService.createTaskQuery()
  62. .taskAssignee(candidateUser)
  63. .orderByTaskCreateTime().desc().list();
  64.  
  65. List<ToDo> todoList = new ArrayList<ToDo>();
  66.  
  67. //指定签收人
  68. for (Task task : tasksAssignee){
  69. ProcessDefinition pd = ProcessHelper.findProcessDefinitionByPid(task.getProcessInstanceId());
  70. todoList.add(new ToDo(task.getId(),task.getName(),task.getCreateTime().toString(),task.getExecutionId(),
  71. task.getProcessInstanceId(),task.getTaskDefinitionKey(),task.getProcessDefinitionId(),pd.getName(),
  72. pd.getKey()));
  73. }
  74. //符合候选人名单的抢签权限的人
  75. for (Task task : tasksCandidate){
  76. ProcessDefinition pd = ProcessHelper.findProcessDefinitionByPid(task.getProcessInstanceId());
  77. todoList.add(new ToDo(task.getId(),task.getName(),task.getCreateTime().toString(),task.getExecutionId(),
  78. task.getProcessInstanceId(),task.getTaskDefinitionKey(),task.getProcessDefinitionId(),pd.getName(),
  79. pd.getKey()));
  80. }
  81. request.setAttribute("tasks", todoList);
  82.  
  83. }
  84.  
  85. }

jsp页面

  1. <%@ include file="/init.jsp" %>
  2.  
  3. <h2><liferay-ui:message key="Todo"/></h2>
  4.  
  5. <table width="100%" class="table table-bordered table-hover table-condensed">
  6. <thead>
  7. <tr>
  8. <th><liferay-ui:message key="ProcessInstanceId"/></th>
  9. <th><liferay-ui:message key="ProcessName"/></th>
  10. <th><liferay-ui:message key="NodeNow"/></th>
  11. <th><liferay-ui:message key="CreateTime"/></th>
  12. <th width="80"><liferay-ui:message key="Operation"/></th>
  13. </tr>
  14. </thead>
  15. <tbody>
  16. <c:forEach items="${tasks }" var="ta">
  17. <tr>
  18. <td>${ta.processInstanceId }</td>
  19. <td>${ta.processName }</td>
  20. <td>${ta.name }</td>
  21. <td>${ta.createTime }</td>
  22. <td><a target="_blank" href='${ctx }/process/taskTodo?key=${ta.processKey }&procInstId=${ta.processInstanceId }&taskId=${ta.id }&activityId=${ta.taskDefinitionKey }'></a><liferay-ui:message key="Sign"/></td>
  23.  
  24. </tr>
  25. </c:forEach>
  26. </tbody>
  27. </table>

这部分的任务完成了一半,还要处理2个逻辑

1、签收待办任务的“签收”处理;

2、发起流程的“启动”处理;

接下来解决。

Liferay7 BPM门户开发之47: 集成Activiti待办已办任务清单和流程启动的更多相关文章

  1. Liferay7 BPM门户开发之26: 集成Activiti到Liferay7

    开发顺序: 实战任务1,开发BPM管理后台(用于在Liferay管理中心管理Activiti模型上传) 一个熟悉Portlet操作的项目,为开发打好基础. http://www.cnblogs.com ...

  2. Liferay7 BPM门户开发之44: 集成Activiti展示流程列表

    处理依赖关系 集成Activiti之前,必须搞清楚其中的依赖关系,才能在Gradle里进行配置. 依赖关系: 例如,其中activiti-engine依赖于activiti-bpmn-converte ...

  3. Liferay7 BPM门户开发之46: 集成Activiti用户、用户组、成员关系同步

    在实际的BPM集成开发过程中,Liferay和Activiti这两个异构的系统之间,用户.组的同步需求非常重要,用来实现签收组的概念,比如指定签收组.会签.抢签都需要用到. Activiti可以通过自 ...

  4. Liferay7 BPM门户开发之45: 集成Activiti文件上传部署流程BPMN模型

    开发文件上传,部署流程模板. 首先,开发jsp页面,deploy.jsp <%@ include file="/init.jsp" %> <h3>${RET ...

  5. Liferay7 BPM门户开发之37: Liferay7下的OSGi Hook集成开发

    hook开发是Liferay客制扩展的一种方式,比插件灵活,即可以扩展liferay门户,也能对原有特性进行更改,Liferay有许多内置的服务,比如用hook甚至可以覆盖Liferay服务. 可作为 ...

  6. Liferay7 BPM门户开发之10: 通用流程实现从Servlet到Portlet(Part1)

    开发目的: 实现通用流程自动化处理(即实现不需要hardcode代码的bpm统一处理后台,仅需要写少量前端html form代码和拖拽设计BPM定义) 既可独立运行或可依托于Liferay或依托其它门 ...

  7. Liferay7 BPM门户开发之17: Portlet 生命周期

    Portlet 生命周期 init() =〉 render() =〉 processAction() =〉 processEvent() =〉 serveResource() =〉destroy() ...

  8. Liferay7 BPM门户开发之5: Activiti和Spring集成

    参考文档: https://github.com/jbarrez/spring-boot-with-activiti-examplehttps://github.com/sxyx2008/spring ...

  9. Liferay7 BPM门户开发之12:acitiviti和liferay用户权限体系集成

    写到第12章才出现Liferay的内容,希望可以厚积薄发. 我们的目标是不使用不维护Activiti的用户组织架构,只维护Liferay的体系,这样的好处是非常明显的,即不用做组织架构的同步工作. 原 ...

随机推荐

  1. Spring 配置 Spring JPA 发生错误的解决方法

    今天在项目的applicationContext.xml中配JPA时 <?xml version="1.0" encoding="UTF-8"?> ...

  2. EXCEL设置选中单元格样式

    你想这样啊,试试这段代码看行不:右键工作表名称--查看代码,在空白处粘贴就可以 Private Sub Worksheet_SelectionChange(ByVal Target As Range) ...

  3. Hbase随笔

    大数据时代的数据量是超大规模的,传统的关系数据库已经很难存储和管理这些数据了,为了存储海量数据,我们有了HDFS,它可以把成千上万台服务器上的硬盘聚集成一块超级大的硬盘,为了让这些数据产生价值,我们有 ...

  4. 今天自己解决了两个问题(IE10 type slow ChromeDriver erro)

    都是通过google解决的,其实本应该很快解决,可是因自己粗心,大写小错了,加上java基础不过关, "webdriver.chrome.driver"中的webdriver应是全 ...

  5. LintCode 463 Sort Integer

    这个是O(n2)的排序的总结 /* bubble sort */public static void sortIntegers(int[] A) { // Write your code here i ...

  6. 【整理】--【KERNEL】内核定时器

    一.LINUX内核定时器是内核用来控制在未来某个时间点(基于jiffies)调度执行某个函数的一种机制,其实现位于 <linux/timer.h> 和 kernel/timer.c 文件中 ...

  7. samba server install

    要求: create vnc service for win7 access it via vnc viewer. 1TB disk for this Centos PC is used as Sam ...

  8. ajax跟取后台 josn 之 josn理解

    json是一种轻量级的数据交换格式,是 JavaScript 原生格式,是理想的数据交换格式. 1.json对象json对象以“{”开始 , 以“}”结束,每个“名称”后跟一个“:”(冒号),‘名:值 ...

  9. spring核心框架体系结构

    很多人都在用spring开发java项目,但是配置maven依赖的时候并不能明确要配置哪些spring的jar,经常是胡乱添加一堆,编译或运行报错就继续配置jar依赖,导致spring依赖混乱,甚至下 ...

  10. wex5&.net开发

    一.环境开发 1.baas.net:菜单“窗口”->“首选项” 确定后左侧生成bass.net目录,设置iis网站目录(因为.net网站必须在iis中部署) 2.sqlserver:根据项目可选 ...