Activiti(一)——HelloWorld

来源:互联网 发布:c语言数组长度最大多少 编辑:程序博客网 时间:2024/06/04 19:24

   转自:http://blog.csdn.net/zjx86320/article/details/50223005

    任何知识的学习都是有简入繁,我们的Activiti也不例外,这篇博文将通过一个简单的HelloWorld来带大家认识一下我们的Activiti;


    一、画流程图


    在画流程图之前,要确保自己的Eclipse安装了Activiti的插件。

                                          

                                                 图一  请假流程图

     

    在这里要说明一下,我们指定在画流程图的时候,要指明这个流程实例的ID、Name,然后设置好每个用户任务的ID、Name、Assignee(办理人);

     

    二、部署流程定义


    在这里我们使用Junit做模拟,代码如下:

[java] view plain copy
  1. public class MyHelloWorld {  
  2.       
  3.     /**获得流程引擎*/  
  4.     ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();  
  5.       
  6.     /**部署流程定义*/  
  7.     @Test  
  8.     public void deployProcessDefinition(){  
  9.           
  10.         Deployment deployment = processEngine.getRepositoryService()//获取流程定义和部署相关的Service  
  11.                 .createDeployment()//创建部署对象  
  12.                 .addClasspathResource("diagrams/myHelloWorld.bpmn")  
  13.                 .addClasspathResource("diagrams/myHelloWorld.png")  
  14.                 .deploy();//完成部署  
  15.           
  16.         System.out.println("部署ID:" + deployment.getId());//部署ID:1  
  17.         System.out.println("部署时间:" + deployment.getDeploymentTime());//部署时间  
  18.     }  
  19. }  

    

    在这里,我们使用RepositoryService来部署流程定义,使用addClasspathResource来从类路径下加载资源,需要注意的是,如果加上"/"表示从当前目录下寻找资源文件,如果不加"/",表示从类路径下加载资源文件;并且一次只能加载一个资源。


    执行结果如下:

    


    三、启动流程实例


    部署和启动对我们开发人员来说一定很熟悉,就拿我们平时做项目来讲,部署就是把项目扔到服务器中,启动就是将服务器运行起来;我们的Activiti也不例外,在这里我们使用RuntimeService来启动流程实例。

    启动流程的方式有很多,推荐使用流程定义的Key来启动,这样做的优势3是可以按照最新版本的流程启动流程实例。


[java] view plain copy
  1. /**启动流程实例*/  
  2. @Test  
  3. public void startProcessInstance(){  
  4.       
  5.     String processDefinitionKey = "myMyHelloWorld";//流程定义的key,也就是bpmn中存在的ID  
  6.       
  7.     ProcessInstance pi = processEngine.getRuntimeService()//管理流程实例和执行对象,也就是表示正在执行的操作  
  8.             .startProcessInstanceByKey(processDefinitionKey);////按照流程定义的key启动流程实例  
  9.               
  10.     System.out.println("流程实例ID:" + pi.getId());//流程实例ID:101  
  11.     System.out.println("流程实例ID:" + pi.getProcessInstanceId());//流程实例ID:101  
  12.     System.out.println("流程实例ID:" + pi.getProcessDefinitionId());//myMyHelloWorld:1:4  
  13. }  


     执行结果如下:

    


    四、查看个人任务


    按照我们流程图上所画的,当这个流程启动之后,流程会停留在[提交申请]这个用户任务上,我们指定这个用户任务的办理人是张三,那么我们张三怎样查看他的任务呢?当然,我们先的知道办理人的名字,这个在我们画流程图的时候已经设置了,直接拿过来用就可以。我们用TaskService完成任务的查询。


[java] view plain copy
  1. /**查看当前任务办理人的个人任务*/  
  2. @Test  
  3. public void findPersonnelTaskList(){  
  4.     String assignee = "张三";//当前任务办理人  
  5.     List<Task> tasks = processEngine.getTaskService()//与任务相关的Service  
  6.             .createTaskQuery()//创建一个任务查询对象  
  7.             .taskAssignee(assignee)  
  8.             .list();  
  9.     if(tasks !=null && tasks.size()>0){  
  10.         for(Task task:tasks){  
  11.             System.out.println("任务ID:"+task.getId());  
  12.             System.out.println("任务的办理人:"+task.getAssignee());  
  13.             System.out.println("任务名称:"+task.getName());  
  14.             System.out.println("任务的创建时间:"+task.getCreateTime());  
  15.             System.out.println("任务ID:"+task.getId());  
  16.             System.out.println("流程实例ID:"+task.getProcessInstanceId());  
  17.             System.out.println("#####################################");  
  18.         }  
  19.     }  
  20. }  

        执行结果如下:

    


    五、完成个人任务


    既然要完成任务,当然少不了任务的ID了,我们在第四步已经得到了我们的任务ID,直接拿过来用就可以了。


[java] view plain copy
  1. /**完成任务*/  
  2. @Test  
  3. public void completeTask(){  
  4.     String taskID = "704";  
  5.     processEngine.getTaskService().complete(taskID);  
  6.     System.out.println("完成任务:"+taskID);  
  7.       
  8. }  

         执行结果如下:

    


    总结:

     至此,我们的HelloWorld就完成了,刚接触工作流的时候总觉得很复杂,过了一段时间之后就发现也就这么点东西,无非是把一个流程抽象出来一个一个对象而已。现在在敲一遍例子,真有种一气呵成的感觉。

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 顺风车无人接单怎么办 来例假腰特别疼怎么办 把人撞死了全责怎么办 朝鲜与美合作对付中国怎么办 申请美国大学gpa不够怎么办 武装突袭3有地雷怎么办 辐射4狗肉跟丢了怎么办 洛奇英雄传死绑S怎么办 在老挝遇到坏人带枪怎么办 买了sd卡卡槽塞不下怎么办 现役军人家庭被邻居欺服怎么办 地铁买票买多了怎么办 免税店买的东西转机怎么办 绿能电动车坏了怎么办? 永久单车收不到验证码怎么办 24速山地车档乱了怎么办 新电瓶车被偷了怎么办 汽车前风挡玻璃砸出洞怎么办 凯迪拉克xt5钥匙掉了怎么办 凯迪拉克xt5媒体不好用怎么办 晒黄的白鞋怎么办 白鞋子被晒黄了怎么办? 耐克空军一号白色发黄怎么办 空军一号破皮了怎么办 匡威鞋帆布破了怎么办 脚腕起疙瘩很痒怎么办 跑步后脚踝微疼怎么办 跑步跑得脚疼怎么办 nike air 鞋头脱胶怎么办 耐克空军一号磨脚怎么办 白鞋刷完变黄了怎么办 乔丹气垫坏了怎么办 气垫鞋气垫坏了怎么办 建行u盾忘记密码怎么办 工商银行u盾忘记密码怎么办 民生银行不给u盾怎么办 银行不给开u盾怎么办 有车有空想赚点外快怎么办 车被注册了滴滴怎么办 快手号手机丢了怎么办 手机号码不停收到验证码怎么办