注:(1)环境搭建:activiti自定义流程之Spring整合activiti-modeler5.16实例(一):环境搭建
        (2)创建流程模型:activiti自定义流程之Spring整合activiti-modeler5.16实例(二):创建流程模型
        (3)流程模型列表展示:activiti自定义流程之Spring整合activiti-modeler5.16实例(三):流程模型列表展示
        (4)部署流程定义:activiti自定义流程之Spring整合activiti-modeler5.16实例(四):部署流程定义

(5)流程定义列表:activiti自定义流程之Spring整合activiti-modeler5.16实例(五):流程定义列表

(6)启动流程:activiti自定义流程之Spring整合activiti-modeler5.16实例(六):启动流程

(7)任务列表展示:activiti自定义流程之Spring整合activiti-modeler5.16实例(七):任务列表展示

(8)完成个人任务:activiti自定义流程之Spring整合activiti-modeler5.16实例(八):完成个人任务

1.所有任务完成,流程也就结束了,查询历史任务或历史流程就要操作act_hi_taskinst表,用的都是historyService来调用相关的方法。
本节示例查询历史任务,历史流程便不再专门示例。

2.后台业务代码,
  (1)自定义的任务实体类

  1. package model;
  2. import <a href="http://lib.csdn.net/base/17" class="replace_word" title="Java EE知识库" target="_blank" style="color:#df3434; font-weight:bold;">java</a>.util.Date;
  3. public class HisTaskModel {
  4. private String id;
  5. private String name;
  6. private String assignee;
  7. private String processInstanceId;
  8. private Date startTime;
  9. private Date endTime;
  10. private String cause;
  11. private String content;
  12. private String taskType;
  13. public String getCause() {
  14. return cause;
  15. }
  16. public void setCause(String cause) {
  17. this.cause = cause;
  18. }
  19. public String getContent() {
  20. return content;
  21. }
  22. public void setContent(String content) {
  23. this.content = content;
  24. }
  25. public String getTaskType() {
  26. return taskType;
  27. }
  28. public void setTaskType(String taskType) {
  29. this.taskType = taskType;
  30. }
  31. public String getId() {
  32. return id;
  33. }
  34. public void setId(String id) {
  35. this.id = id;
  36. }
  37. public String getName() {
  38. return name;
  39. }
  40. public void setName(String name) {
  41. this.name = name;
  42. }
  43. public String getAssignee() {
  44. return assignee;
  45. }
  46. public void setAssignee(String assignee) {
  47. this.assignee = assignee;
  48. }
  49. public String getProcessInstanceId() {
  50. return processInstanceId;
  51. }
  52. public void setProcessInstanceId(String processInstanceId) {
  53. this.processInstanceId = processInstanceId;
  54. }
  55. public Date getStartTime() {
  56. return startTime;
  57. }
  58. public void setStartTime(Date startTime) {
  59. this.startTime = startTime;
  60. }
  61. public Date getEndTime() {
  62. return endTime;
  63. }
  64. public void setEndTime(Date endTime) {
  65. this.endTime = endTime;
  66. }
  67. @Override
  68. public String toString() {
  69. return "HisTaskModel [id=" + id + ", name=" + name + ", assignee="
  70. + assignee + ", processInstanceId=" + processInstanceId
  71. + ", startTime=" + startTime + ", endTime=" + endTime
  72. + ", cause=" + cause + ", content=" + content + ", taskType="
  73. + taskType + "]";
  74. }
  75. }

(2)业务逻辑:
这里需要注意的是,历史表中存在并非是单一类型的数据,就拿历史任务表来说,里边既有已经结束的任务,也有还没有结束的任务。
如果要单独查询结束了的任务,就可以调用finished()方法,查询的就是已经结束的任务。

  1. /**
  2. * 查询我的历史任务
  3. *
  4. * @author:tuzongxun
  5. * @Title: hisTask
  6. * @param @param req
  7. * @param @return
  8. * @return Object
  9. * @date Mar 18, 2016 9:12:07 AM
  10. * @throws
  11. */
  12. @RequestMapping(value = "/hisTask.do", method = RequestMethod.POST, produces = "application/json;charset=utf-8")
  13. @ResponseBody
  14. public Object hisTask(HttpServletRequest req) {
  15. Map<String, Object> map = new HashMap<String, Object>();
  16. boolean isLogin = this.isLogin(req);
  17. if (isLogin) {
  18. HttpSession session = req.getSession();
  19. String assignee = (String) session.getAttribute("userName");
  20. List<HistoricTaskInstance> hisTaskList1 = historyService
  21. .createHistoricTaskInstanceQuery().taskAssignee(assignee)
  22. .finished().list();
  23. List<HisTaskModel> hisTaskList = new ArrayList<HisTaskModel>();
  24. for (HistoricTaskInstance hisTask : hisTaskList1) {
  25. HisTaskModel hisModel = new HisTaskModel();
  26. List<HistoricVariableInstance> hisList = historyService
  27. .createHistoricVariableInstanceQuery()
  28. .processInstanceId(hisTask.getProcessInstanceId())
  29. .list();
  30. for (HistoricVariableInstance hisVariable : hisList) {
  31. String name = hisVariable.getVariableName();
  32. if (name.equals("content")) {
  33. hisModel.setContent((String) hisVariable.getValue());
  34. } else if (name.equals("cause")) {
  35. hisModel.setCause((String) hisVariable.getValue());
  36. } else if (name.equals("taskType")) {
  37. hisModel.setTaskType((String) hisVariable.getValue());
  38. }
  39. }
  40. hisModel.setAssignee(hisTask.getAssignee());
  41. hisModel.setEndTime(hisTask.getEndTime());
  42. hisModel.setId(hisTask.getId());
  43. hisModel.setName(hisTask.getName());
  44. hisModel.setProcessInstanceId(hisTask.getProcessInstanceId());
  45. hisModel.setStartTime(hisTask.getStartTime());
  46. hisTaskList.add(hisModel);
  47. }
  48. map.put("isLogin", "yes");
  49. map.put("userName",
  50. (String) req.getSession().getAttribute("userName"));
  51. map.put("result", "success");
  52. map.put("data", hisTaskList);
  53. } else {
  54. map.put("isLogin", "no");
  55. }
  56. return map;
  57. }

3.angular js前台代码(前台只是做简单的展示,不多讲):
  (1)app.js中配置路由:

  1. $stateProvider
  2. .state('hisTask', {
  3. url: "/hisTask",
  4. views: {
  5. 'view': {
  6. templateUrl: 'activi_views/hisTask.html',
  7. controller: 'hisTaskCtr'
  8. }
  9. }
  10. });

(2)逻辑相关代码:

  1. angular.module('activitiApp')
  2. .controller('hisTaskCtr', ['$rootScope','$scope','$http','$location', function($rootScope,$scope,$http,$location){
  3. $scope.init=function(){
  4. $http.post("./hisTask.do").success(function(result) {
  5. if(result.isLogin==="yes"){
  6. console.log(result.data);
  7. $rootScope.userName=result.userName;
  8. $scope.taskList=result.data;
  9. }else{
  10. $location.path("/login");
  11. }
  12. });
  13. }
  14. }])

4.对应的填写相关信息的页面:

    1. <div id="logdiv1" ng-init="init();">
    2. <p style="font-size:24px;margin-top:10px">历史任务列表</p>
    3. <center>
    4. <table border="1px" style="width:87%;font-size:18px;text-align:center;margin-top:1px;margin-left:2px;position:relative;float:left;" cellSpacing="0px" cellPadding="0px">
    5. <tr style="background-color:#ccc">
    6. <td>类型</td>
    7. <td>ID</td>
    8. <td>NAME</td>
    9. <td>流程实例Id</td>
    10. <td>开始时间</td>
    11. <td>受理人</td>
    12. <td>完成时间</td>
    13. <td>发起原因</td>
    14. <td>内容</td>
    15. </tr>
    16. <tr ng-repeat="task in taskList | orderBy:'id'" >
    17. <td>{{task.taskType}}</td>
    18. <td>{{task.id}}</td>
    19. <td>{{task.name}}</td>
    20. <td>{{task.processInstanceId}}</td>
    21. <td>{{task.startTime | date:"yyyy-MM-dd HH:mm:ss"}}</td>
    22. <td>{{task.assignee}}</td>
    23. <td>{{task.endTime | date:"yyyy-MM-dd HH:mm:ss"}}</td>
    24. <td>{{task.cause}}</td>
    25. <td>{{task.content}}</td>
    26. </tr>
    27. </table>
    28. </center>
    29. </div>

activiti自定义流程之Spring整合activiti-modeler5.16实例(九):历史任务查询的更多相关文章

  1. activiti自定义流程之Spring整合activiti-modeler5.16实例(八):完成个人任务

    注:(1)环境搭建:activiti自定义流程之Spring整合activiti-modeler5.16实例(一):环境搭建        (2)创建流程模型:activiti自定义流程之Spring ...

  2. activiti自定义流程之Spring整合activiti-modeler5.16实例(七):任务列表展示

    注:(1)环境搭建:activiti自定义流程之Spring整合activiti-modeler5.16实例(一):环境搭建        (2)创建流程模型:activiti自定义流程之Spring ...

  3. activiti自定义流程之Spring整合activiti-modeler5.16实例(六):启动流程

    注:(1)环境搭建:activiti自定义流程之Spring整合activiti-modeler5.16实例(一):环境搭建        (2)创建流程模型:activiti自定义流程之Spring ...

  4. activiti自定义流程之Spring整合activiti-modeler5.16实例(五):流程定义列表

    注:(1)环境搭建:activiti自定义流程之Spring整合activiti-modeler5.16实例(一):环境搭建        (2)创建流程模型:activiti自定义流程之Spring ...

  5. activiti自定义流程之Spring整合activiti-modeler5.16实例(四):部署流程定义

    注:(1)环境搭建:activiti自定义流程之Spring整合activiti-modeler5.16实例(一):环境搭建        (2)创建流程模型:activiti自定义流程之Spring ...

  6. activiti自定义流程之Spring整合activiti-modeler5.16实例(三):流程模型列表展示

    注:(1)环境搭建:activiti自定义流程之Spring整合activiti-modeler5.16实例(一):环境搭建        (2)创建流程模型:activiti自定义流程之Spring ...

  7. activiti自定义流程之Spring整合activiti-modeler5.16实例(二):创建流程模型

    注:(1)环境搭建:activiti自定义流程之Spring整合activiti-modeler5.16实例(一):环境搭建 1.maven导包,这里就没有什么多的好说了,直接代码: <depe ...

  8. activiti自定义流程之Spring整合activiti-modeler5.16实例(一):环境搭建

    项目中需要整合activiti-modeler自定义流程,找了很多资料后,终于成功的跳转到activiti-modeler流程设计界面,以下是记录: 一.整合基础:eclipse4.4.1.tomca ...

  9. activiti自己定义流程之Spring整合activiti-modeler5.16实例(四):部署流程定义

    注:(1)环境搭建:activiti自己定义流程之Spring整合activiti-modeler5.16实例(一):环境搭建         (2)创建流程模型:activiti自己定义流程之Spr ...

随机推荐

  1. 第一篇TC界面设计

    TC界面设计方法 第一:确定自己最终界面的大小. 第二:根据功能需要,选择相应的控价. 第三:美化界面,对界面的控件调整布局位置,设置字体颜色设置背景图片等等 脚本代码: function 按钮1_点 ...

  2. CentOS6.3 Hostname设定修改

    今天装了个CentOS6.3恩,基本上是参照百度文库上面的文章来安装的 http://wenku.baidu.com/link?url=K0tqotryKLFHhJGicx1nC-hsgfWhL3OI ...

  3. 4-3 yum命令

    1.常用yum命令 <1>查询 yum list #查询所有可用软件包列表(以 包名 - 版本 - yum源所在名称 格式显示) yum search 关键字 #搜索服务器上所有和关键字相 ...

  4. HDU 1312 Red and Black --- 入门搜索 DFS解法

    HDU 1312 题目大意: 一个地图里面有三种元素,分别为"@",".","#",其中@为人的起始位置,"#"可以想象 ...

  5. Java——函数

     ------- <a href="http://www.itheima.com" target="blank">android培训</a ...

  6. DuiLib——xml配置项

    DUILibxml配置项 根节点 子类 属性 类型 Window  |--------Image 图片信息 | o------name string | o------restype string | ...

  7. GDI+中GIF图片的显示

    某位网友曾经问过我GDI+中Gif图像显示的问题,一直没时间给你写,在此致歉.我把这篇文章送给他. 一.GIF格式介绍 1.概述 GIF(Graphics Interchange Format,图形交 ...

  8. HashMap的原理与实 无锁队列的实现Java HashMap的死循环 red black tree

    http://www.cnblogs.com/fornever/archive/2011/12/02/2270692.html https://zh.wikipedia.org/wiki/%E7%BA ...

  9. linux操作文本文件

    打开文件 #vi 文件名 保存退出 从编辑模式退到命令行模式,按esc键 保存退出命令 #:wq 强制退出,不保存 #:q!

  10. java 类型转json格式

    json-lib-2.4-jdk15.jar List<People> mapPersonTypes = null; private JSONArray json_mapPersonTyp ...