版权声明:本文为博主原创文章,未经博主允许不得转载。

1.使用eclipse的activiti插件画流程图

在resource文件夹下新建一个工作流diagram

右键——new——other...——选择activiti diagram

画一个简单的工作流程图

在Event选出一个开始节点startEvent和一个结束节点endEvent

在中间过程用task里面的userTask

如:

2.部署流程定义(相当于在页面选择bpmn文件上传部署)

  1. ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
  2. /**部署流程定义*/
  3. @Test
  4. public void deploymentProcessDefinition(){
  5. Deployment deployment = processEngine.getRepositoryService()//与流程定义和部署对象相关的Service
  6. .createDeployment()//创建一个部署对象
  7. .name("helloworld入门程序")//添加部署的名称
  8. .addClasspathResource("diagrams/helloworld.bpmn")//从classpath的资源中加载,一次只能加载一个文件
  9. .addClasspathResource("diagrams/helloworld.png")//从classpath的资源中加载,一次只能加载一个文件
  10. .deploy();//完成部署
  11. System.out.println("部署ID:"+deployment.getId());//1
  12. System.out.println("部署名称:"+deployment.getName());//helloworld入门程序
  13. }

3.启动流程实例(相当于新建一个流程)

  1. ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
  2. /**启动流程实例*/
  3. @Test
  4. public void startProcessInstance(){
  5. //流程定义的key
  6. String processDefinitionKey = "helloworld";
  7. ProcessInstance pi = processEngine.getRuntimeService()//与正在执行的流程实例和执行对象相关的Service
  8. .startProcessInstanceByKey(processDefinitionKey);//使用流程定义的key启动流程实例,key对应helloworld.bpmn文件中id的属性值,使用key值启动,默认是按照最新版本的流程定义启动
  9. System.out.println("流程实例ID:"+pi.getId());//流程实例ID    101
  10. System.out.println("流程定义ID:"+pi.getProcessDefinitionId());//流程定义ID   helloworld:1:4
  11. }

4.查询当前人的个人任务(相当于查询代办列表)

  1. ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
  2. /**查询当前人的个人任务*/
  3. @Test
  4. public void findMyPersonalTask(){
  5. String assignee = "王五";
  6. List<Task> list = processEngine.getTaskService()//与正在执行的任务管理相关的Service
  7. .createTaskQuery()//创建任务查询对象
  8. .taskAssignee(assignee)//指定个人任务查询,指定办理人
  9. .list();
  10. if(list!=null && list.size()>0){
  11. for(Task task:list){
  12. System.out.println("任务ID:"+task.getId());
  13. System.out.println("任务名称:"+task.getName());
  14. System.out.println("任务的创建时间:"+task.getCreateTime());
  15. System.out.println("任务的办理人:"+task.getAssignee());
  16. System.out.println("流程实例ID:"+task.getProcessInstanceId());
  17. System.out.println("执行对象ID:"+task.getExecutionId());
  18. System.out.println("流程定义ID:"+task.getProcessDefinitionId());
  19. System.out.println("########################################################");
  20. }
  21. }
  22. }

5.完成我的任务(相当于提交流程,流程进入下一环节)

  1. ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
  2. /**完成我的任务*/
  3. @Test
  4. public void completeMyPersonalTask(){
  5. //任务ID
  6. String taskId = "302";
  7. processEngine.getTaskService()//与正在执行的任务管理相关的Service
  8. .complete(taskId);
  9. System.out.println("完成任务:任务ID:"+taskId);
  10. }

Activiti工作流(4):编写一个HelloWorld的更多相关文章

  1. PHP扩展开发--编写一个helloWorld扩展

    为什么要用C扩展 C是静态编译的,执行效率比PHP代码高很多.同样的运算代码,使用C来开发,性能会比PHP要提升数百倍. 另外C扩展是在进程启动时加载的,PHP代码只能操作Request生命周期的数据 ...

  2. PHP扩展开发--01.编写一个helloWorld扩展

    为什么要用C扩展 C是静态编译的,执行效率比PHP代码高很多.同样的运算代码,使用C来开发,性能会比PHP要提升数百倍. 另外C扩展是在进程启动时加载的,PHP代码只能操作Request生命周期的数据 ...

  3. 如何自己编写一个easyui插件

    本文介绍如何通过参考1.4.2版本的progressbar的源码自己编写一个HelloWorld级别的easyui插件,以及如何拓展插件的功能. 有利于我们理解easyui插件的实现,以及了解如何对e ...

  4. Viper 微服务框架 编写一个hello world 插件-02

    1.Viper是什么? Viper 是.NET平台下的Anno微服务框架的一个示例项目.入门简单.安全.稳定.高可用.全平台可监控.底层通讯可以随意切换thrift grpc. 自带服务发现.调用链追 ...

  5. 用Spring3编写第一个HelloWorld项目

    第一个HelloWorld程序 让我们用Spring来写第一个应用程序吧. 完成这一章要求: 熟悉Java语言 设置好Spring的环境 熟悉简单的Eclipse IDE的操作 如果你还没有设置好环境 ...

  6. Activiti工作流学习-----基于5.19.0版本(6)

    七. BPMN的简介 读者了解到这里,应付一般的工作流开发已经足够了.此处应该有华丽的分割线,在工作流项目中核心开发人员主要是对工作流业务设计以及实现,而初级开发人员是对业务功能的代码实现.以后将主要 ...

  7. Activiti工作流搭建---初始化数据库

    Activiti介绍 Activiti5是由Alfresco软件在2010年5月17日发布的业务流程管理(BPM)框架,它是覆盖了业务流程管理.工作流.服务协作等领域的一个开源的.灵活的.易扩展的可执 ...

  8. 手把手教你如何玩转Activiti工作流

    手把手教你如何玩转Activiti工作流 置顶 2018年01月30日 19:51:36 Cs_hnu_scw 阅读数:24023   版权声明:本文为博主原创文章,未经博主允许不得转载. https ...

  9. Activiti工作流小序曲

    一般涉及到OA.ERP等公司办公系统都必须有一套办公流程,这时候使用activiti工作流框架会大大减轻我们的工作量,提高我们的开发效率. Activiti工作流简单介绍: 工作流(workflow) ...

随机推荐

  1. 检测浏览器是否支持range

    昨天的滑块建立在Input range这个基础上  这是IOS5.0及以后才支持的,而且在android2.3以下表现也不对 昨天的检测方式 var input = document.createEl ...

  2. Linux多线程实践(六)使用Posix条件变量解决生产者消费者问题

    前面的一片文章我们已经讲过使用信号量解决生产者消费者问题.那么什么情况下我们须要引入条件变量呢? 这里借用  http://www.cnblogs.com/ngnetboy/p/3521547.htm ...

  3. poj_3371

    一道模拟题,写的有点麻烦 #include<iostream> #include<cstring> #include<cstdio> #include<alg ...

  4. matplotlib 可视化 —— 绘制常见图形

    0. 饼状图 plt.pie():Python数据可视化:饼状图 1. 三角形 描点连线,起点和终点相同 triangle1 = ((0, sqrt(3)/2), (1, 3*sqrt(3)/2), ...

  5. BZOJ 3240 构造矩阵+矩阵快速幂

    思路: ax+b cx+d 构造矩阵+矩阵快速幂 (需要加各种特判,,,,我好像加少了- ) //By SiriusRen #include <cstdio> #include <c ...

  6. Access-Control-Allow-Origin 如何设置多个值呢

    需求就是多个网站请求同一个api服务器和这里一样https://segmentfault.com/q/10... 我不是做后端的,但是我们后端不知道怎么设置,在web.config里设置了一下 < ...

  7. js数组的操作 Full

    js数组的操作 用 js有很久了,但都没有深究过js的数组形式.偶尔用用也就是简单的string.split(char).这段时间做的一个项目,用到数组的地方很多,自以为js高手的自己居然无从下手,一 ...

  8. win10 的MQTT + apache-apollo服务器使用

    我的使用环境是windows10 2.下载文件目录(注意:开始看教程说直接打开bin目录下的apollo.cmd文件,闪退,原因是没有java_home环境,必须添加java环境): 3.安装好jav ...

  9. 最小生成树(MST) prim() 算法 kruskal()算法 A - 还是畅通工程

    某省调查乡村交通状况,得到的统计表中列出了任意两村庄间的距离. 省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可),并要求铺设的公 ...

  10. Vue2.4.0 新增的inheritAttrs,attrs

    官方inheritAttrs,attrs文档https://cn.vuejs.org/v2/guide/components-props.html,从最下面的'非 Prop 的特性'开始看,看到最后 ...