注:(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. php 小知识积累

    1.如果能将类的方法定义成static,就尽量定义成static,它的速度会提升将近4倍. 2.$row['id']的速度是$row[id]的7倍. 3.echo比print快,并且使用echo的多重 ...

  2. php函数 date() 详细资料

    date_default_timezone_set(PRC); /*把时间调到北京时间,php5默认为格林威治标准时间*/ date () a: "am"或是"pm&qu ...

  3. 转ORA-28002: the password will expire within 7 days 解决方法

    最后一步要改密码,否则还会报错. 1. 查看用户的profile设置: SELECT username,profile FROM dba_users; 一般用户的profile设置都为DEFAULT. ...

  4. scala言语基础学习三

    map的操作 访问fangwemap元素 修改map元素 遍历map sortmap和linkmap map元素类型tuple

  5. 课堂所讲整理:HTML--7JavaScript的DOM操作

    1.DOM的基本概念 DOM是文档对象模型,这种模型为树模型:文档是指标签文档:对象是指文档中每个元素:模型是指抽象化的东西. 2.Window对象操作 一.属性和方法: 属性(值或者子对象): op ...

  6. 【P1373】奶牛的卧室

    看山神的题解写出来的,sro_dydxh_orz 原题:奶牛们有一个习惯,那就是根据自己的编号选择床号.如果一头奶牛编号是a,并且有0..k-1一共k张床,那么她就会选择a  mod  k号床作为她睡 ...

  7. ORA-12547:TNS:lost contact 问题分析思路

    ORA-12547:TNS:lost contact sqlplus无法正常登陆数据库 解决思路如下: 1.查看操作系统内核参数是否无误 [oracle@normal adump]$ ulimit - ...

  8. 【Unity3D技巧】一个简单的Unity-UI框架的实现

    如何使用 请直接导入UnityUIFramework这个UnityPackage,然后进入名为Test的Scene即可开始体验各种特性,Enjoy!你可以通过访问我的Github进行查阅和下载. Vi ...

  9. Freezing Your Tuples Off 之 vacuum_freeze_min_age

    The vacuum_freeze_min_age setting determines the youngest XID which will be changed to FrozenXID on ...

  10. 09-Java 工程结构管理

    (一)Java 工程结构管理 1.什么是Build Path: -- 一般包括:JRE运行时库 第三方功能扩展库(*.jar 格式文件) 其他的工程 其他的源代码或Class 文件 为什么使用~ :通 ...