Activiti使用文档


低价商品,欢迎微信扫码选购


1:Activiti使用流程

1:绘制流程图。

1:Eclipse安装Activiti插件(Eclipse有些版本装不了,需要注意)。

2:安装完插件之后,在项目文件夹下创建Activiti Diagram(和创建Java类类似)

3:Eclipse右侧会有一些Activiti图标,每个图标代表的含义可以参阅Activiti文档(共享盘有)

4:Window->Showview->Package Explorer打开包试图,右键刚才创建Activiti流程图的项目,点击Create deployement artifacts。会根据流程图生成相应的*.bpmn20.xml文件

注:Window->Preferences->Activiti->Save,勾选右侧的Create process definition image…,在保存流程图时,自动生成流程图

 

2:流程部署(参阅文档第6章)

1:直接部署生成的*.bpmn20.xml文件,Activiti自动生成流程图。如果流程图中包含汉字,生成的流程图会乱码。

2:将生成的*.bpmn20.xml和*.png流程图通过Ant打包,然后部署压缩文件

3:同时部署*.bpmn20.xml 和生成的流程图,项目中就是采用该方法。

 

3:启动流程(表单提交)

通过RuntimeService方法提交,Activiti提供了2种提交表单的方式

1:startProcessInstanceById:每次流程部署时,都会根据流程key,version生成一个流程ID,通过流程ID查找特定的流程,来提交表单。

2:startProcessInstanceByKey:通过key来提交表单,每次提交单据时,都会使用最新部署的流程。

3:第1个参数,是对应的流程id或流程key,也可以在提交表单时,传递一些参数,供Activiti使用。Eg:表单提交后,根据部门不同,指定不同人审核,可以在启动流程时,就通过Map传递参数。

 

4:单据审批

单据审批时,实际是处理的审批任务(Task),需要先拿到任务的ID(Task_id),通过TaskService.complete来完成任务。在执行complete时,也可以传递一些参数。Eg:员工在审批时,可能选择通过(C),不通过(D),对应流程图中通过${status==’C’},${status==’D’}走不同的流程,可以通过Map来传递status的值。

 

 

2:通过简单DEMO详细讲解Activiti使用

通过截图及部分代码,详细讲解1中的每一步操作

1:绘制流程图

1:Eclipse安装Activiti插件。Activiti插件地址:http://activiti.org/designer/update/

不清楚插件安装方式的,可以直接google搜索。注:某些Eclipse版本安装不了,需注意。

2:右键项目文件夹,创建Activiti  Diagram文件。

3:创建一个简单的流程图。

a:右键创建一个简单的空白的Activiti Diagram文件,假设文件名叫SimpleDemo。

b:Window->Show View调出Properties视图。点击SimpleDemo文件空白处,

在Properties视图中,设置流程图的Id(对应提交表单时的Key)。

注:不要和项目中存在的流程重名


c:通过Palette试图中的组件,画出如下的流程图(用到的组件,右侧已标注)


d:用户任务讲解。选中用户任务,Properties视图中设置参数。


Main config选项:

Assignee:可以直接在Assignee中指定员工或通过Spring指定Bean的方法进行人员查找。无论通过哪种方式,都只能指定一个人。

Candidateusers:可以设定为“123,456”,将员工123或456设定为候选人,由其中的一个员工进行审批(审批前需要taskService.claim进行任务认领)

Form选项:

如果使用Activiti内置表单,才会用到Form。内置表单可以参考Activiti文档,

上面有详细讲解,由于项目中使用的是自定义表单,所以不讲解Form。

Listeners选项:



通过指定一个实现TaskListener接口的类,来指定将该用户任务分配给某个员工。

如果不需要向SimpleUserTask传递参数,也可以不添加nodeId属性。

TaskListener接口,在org.activiti.engine.delegate包下,不要继承错误。


Multi instance选项:

下面截图是出差审批流程中的部分截图


Sequential:比如一共创建了3个用户任务,他们是并行执行还是串行执行。

Loopcardinality:从单词意识上也可以看出来,一共循环几次,即:创建几个用户任务。

Collection:是一个集合,里面存放了需要通过多实例创建用户任务的员工ID。

Elementvariable:循环Collection集合时,集合中元素对应的变量名。

Completioncondition:定义多实例结束条件。如果该多实例创建了3个用户任务,在3个员工全部审批完,或有一个员工审批不通过时,跳出该节点继续向后执行。

e:条件顺序流


General:Name属性也可以不写或使用默认的,为了流程图容易理解,我们将其改为“同意”。

Mainconfig:将Condition设置为${status=='C'},在审批时,传递一个status参数。

同理设置不同意的Name和Condition。

注:Activiti审批流必须从startEvent开始,最终走向endEvent结束,如果传递的status既不是C也不是D,则会报no outgoing的错误

 

f:Java服务任务

Java服务任务会由Activiti自动执行,不像用户任务会阻塞,等待人为的处理。



可以在通过或不通过的回调中,执行不同申请的逻辑处理。

4:Window-Show View切换到Package Explorer。

右键项目,点击Create deployment artifacts,

将生成的bpmn20.xml文件以及保存时自动生成的png流程图文件上传到服务器,然后部署。


 

 

 

2:流程部署(参阅文档第6章)

流程部署只讲项目中使用的方法


 

 

3:启动流程(表单提交)


也可以通过startProcessInstanceById提交单据。通过ByKey提交时,每次部署新的流程,

都会自动使用最新部署的流程;但是使用ById提交单据时,即便流程图重新部署,也只会使用

提交时指定的流程图。

 

 

4:单据审批

通过taskService.complete(task, map);进行审批。

task:任务ID

map:包括statusopinion等。

 

说明:

1:在startProcessInstanceByKey启动流程时通过Map传递的参数可以再流程图(eg:${param==’xxx’),用户任务接口(DelegateTask.getVariable),Java服务任务(DelegateExecution. getVariable)中使用。

2:在用户任务(TaskListener接口实现类),Java服务任务(JavaDelegate)以及

审批时(taskService.complete)同样可以向Activiti传递参数。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值