码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2016-04-13 11:03:16      阅读:174      评论:0      收藏:0      [点我收藏+]

标签:

注:(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)自定义的任务实体类

[java] view plain copy
 
 技术分享技术分享
  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.   
  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.    <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实例(九):历史任务查询

标签:

原文地址:http://www.cnblogs.com/tuzongxun/p/5386193.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!