activiti自定义流程之Spring整合activiti-modeler实例(九):历史任务查询

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


2.后台业务代码,
  (1)自定义的任务实体类
[java]  view plain  copy
 
  1. package model;  
  2. import java.util.Date;  
  3.   
  4. public class HisTaskModel {  
  5.     private String id;  
  6.     private String name;  
  7.     private String assignee;  
  8.     private String processInstanceId;  
  9.     private Date startTime;  
  10.     private Date endTime;  
  11.     private String cause;  
  12.     private String content;  
  13.     private String taskType;  
  14.   
  15.     public String getCause() {  
  16.         return cause;  
  17.     }  
  18.   
  19.     public void setCause(String cause) {  
  20.         this.cause = cause;  
  21.     }  
  22.   
  23.     public String getContent() {  
  24.         return content;  
  25.     }  
  26.   
  27.     public void setContent(String content) {  
  28.         this.content = content;  
  29.     }  
  30.   
  31.     public String getTaskType() {  
  32.         return taskType;  
  33.     }  
  34.   
  35.     public void setTaskType(String taskType) {  
  36.         this.taskType = taskType;  
  37.     }  
  38.   
  39.     public String getId() {  
  40.         return id;  
  41.     }  
  42.   
  43.     public void setId(String id) {  
  44.         this.id = id;  
  45.     }  
  46.   
  47.     public String getName() {  
  48.         return name;  
  49.     }  
  50.   
  51.     public void setName(String name) {  
  52.         this.name = name;  
  53.     }  
  54.   
  55.     public String getAssignee() {  
  56.         return assignee;  
  57.     }  
  58.   
  59.     public void setAssignee(String assignee) {  
  60.         this.assignee = assignee;  
  61.     }  
  62.   
  63.     public String getProcessInstanceId() {  
  64.         return processInstanceId;  
  65.     }  
  66.   
  67.     public void setProcessInstanceId(String processInstanceId) {  
  68.         this.processInstanceId = processInstanceId;  
  69.     }  
  70.   
  71.     public Date getStartTime() {  
  72.         return startTime;  
  73.     }  
  74.   
  75.     public void setStartTime(Date startTime) {  
  76.         this.startTime = startTime;  
  77.     }  
  78.   
  79.     public Date getEndTime() {  
  80.         return endTime;  
  81.     }  
  82.   
  83.     public void setEndTime(Date endTime) {  
  84.         this.endTime = endTime;  
  85.     }  
  86.   
  87.     @Override  
  88.     public String toString() {  
  89.         return "HisTaskModel [id=" + id + ", name=" + name + ", assignee="  
  90.                 + assignee + ", processInstanceId=" + processInstanceId  
  91.                 + ", startTime=" + startTime + ", endTime=" + endTime  
  92.                 + ", cause=" + cause + ", content=" + content + ", taskType="  
  93.                 + taskType + "]";  
  94.     }  
  95. }  


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

[java]  view plain  copy
 
  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.   
  41.   
  42.                 hisModel.setAssignee(hisTask.getAssignee());  
  43.                 hisModel.setEndTime(hisTask.getEndTime());  
  44.                 hisModel.setId(hisTask.getId());  
  45.                 hisModel.setName(hisTask.getName());  
  46.                 hisModel.setProcessInstanceId(hisTask.getProcessInstanceId());  
  47.                 hisModel.setStartTime(hisTask.getStartTime());  
  48.                 hisTaskList.add(hisModel);  
  49.             }  
  50.             map.put("isLogin""yes");  
  51.             map.put("userName",  
  52.                     (String) req.getSession().getAttribute("userName"));  
  53.             map.put("result""success");  
  54.             map.put("data", hisTaskList);  
  55.         } else {  
  56.             map.put("isLogin""no");  
  57.         }  
  58.         return map;  
  59.     }  


3.angular js前台代码(前台只是做简单的展示,不多讲):
  (1)app.js中配置路由:
  
[javascript]  view plain  copy
 
  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)逻辑相关代码:
 
[javascript]  view plain  copy
 
  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.     
  15. }])    

4.对应的填写相关信息的页面:
[html]  view plain  copy
 
  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>    

你可能感兴趣的:(java,spring,Activiti,modeler,历史任务)