工作流 快速启动
来源:互联网 发布:女命七杀格 知乎 编辑:程序博客网 时间:2024/06/05 09:38
具体实现:
1、下载安装eclipse 配置activiti插件
2、在eclipse中建立Activiti Project
3、在resources下新建Activiti Diagram
4、设计流程节点,可以添加节点上可以添加form(支持类型string、long、enum、date、boolean),可以在连线上设置判断条件控制流程走向,最后保存文件。
5、在需要添加工作流的项目中resources底下添加activiti.cfg.xml文件。
6、添加diagrams文件夹并将5保存的文件考到其中。
7、在pom.xml中引入activiti资源依赖
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-engine</artifactId>
<version>5.16</version>
</dependency>
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-cdi</artifactId>
<version>5.16</version>
</dependency>
8、代码引入工作流
@Test
public void createTable() {
ProcessEngine processEngine = ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("activiti.cfg.xml").buildProcessEngine();
}
/**
* 部署流程
* 启动完成后在act_re_deployment流程部署表和act_re_procdef流程定义表中会有对应的数据信息.
*/
@Test
public void deployFlow(){
Deployment deployment = processEngine.getRepositoryService()
.createDeployment()
.name("test")
.addClasspathResource("diagrams/MyProcess.bpmn")
.addClasspathResource("diagrams/MyProcess.png")
.deploy();
System.out.println(deployment.getId());
System.out.println(deployment.getName());
}
/**
* 删除流程定义
*/
@Test
public void deleteProcessDefinition(){
RepositoryService repositoryService = this.processEngine.getRepositoryService();
/**
* 只能删除没有启动流程的流程定义。如果流程启动则抛出异常
*/
repositoryService.deleteDeployment("5004",true);//删除流程定义,级联删除启动的流程
}
/**
* 启动流程
* 启动完流程后在act_ru_execution表中会产生一条数据,这条数据为当前流程正在执行的任务,其中act_id_字段的值对应流程图节点的ID值 在act_ru_task表中会产生一条任务数据,execution_id_对应act_ru_execution主键,proc_inst_id_为流程实例ID,name_值为流程节点名称,assignee_字段为该待办当前的处理人
*/
@Test
public void flowStart(){
RuntimeService runtimeService = processEngine.getRuntimeService();
//使用流程定义key启动流程实例,key对象myProcess.bpmn文件中的id属性,对应act_re_procdef
//用key启动时按照罪行的流程版本定义启动
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("myProcess");
System.out.println(processInstance.getId()); //流程实例id
System.out.println(processInstance.getProcessDefinitionId());//流程定义id
RepositoryService repositoryService = processEngine.getRepositoryService();
ProcessDefinition processDefinition = repositoryService.getProcessDefinition(processInstance.getProcessDefinitionId());
System.out.println(processDefinition.getId());
System.out.println(processDefinition.getKey());
}
/**
* 查询当前人的任务
*/
@Test
public void findMyPersonTask (){
String assignee= "张三";
List<Task> taskList = this.processEngine.getTaskService()
.createTaskQuery()//创建查询对象
.taskAssignee(assignee)//制定要查询的人
.list();
if(taskList !=null && !taskList.isEmpty()){
for (Task task:taskList){
System.out.println("待办任务id:" + task.getId() + " ");
System.out.println("任务名称:" + task.getName() + " ");
System.out.println("任务创建时间:" + task.getCreateTime() + " ");
System.out.println("任务办理人:" + task.getAssignee() + " ");
}
}
}
/**
*推进工作流进程
*
*/
@Test
public void completeTask2(){
String taskId = "15002";
Map variables = new HashMap<>();
variables.put("message", "同意");
this.processEngine.getTaskService()//获取任务service
.complete(taskId,variables);
System.out.println("完成任务,任务id:"+taskId);
}
/**
*获取form设置
*
*/
@Test
public void getFormProperties(){
String taskId = "2504";
List<FormProperty> list = this.processEngine.getFormService().getTaskFormData(taskId).getFormProperties();
if(list!=null && list.size()>0){
for(FormProperty formProperty:list){
formProperty.getType();
System.out.println(formProperty.getId() + " " + formProperty.getName() + " " +formProperty.getValue());
}
}
}
注意事项:
activiti设置表单只保存表单设置,但是应用中录入的值是不保存的,需要系统自行开发保存
1、下载安装eclipse 配置activiti插件
2、在eclipse中建立Activiti Project
3、在resources下新建Activiti Diagram
4、设计流程节点,可以添加节点上可以添加form(支持类型string、long、enum、date、boolean),可以在连线上设置判断条件控制流程走向,最后保存文件。
5、在需要添加工作流的项目中resources底下添加activiti.cfg.xml文件。
6、添加diagrams文件夹并将5保存的文件考到其中。
7、在pom.xml中引入activiti资源依赖
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-engine</artifactId>
<version>5.16</version>
</dependency>
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-cdi</artifactId>
<version>5.16</version>
</dependency>
8、代码引入工作流
@Test
public void createTable() {
ProcessEngine processEngine = ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("activiti.cfg.xml").buildProcessEngine();
}
/**
* 部署流程
* 启动完成后在act_re_deployment流程部署表和act_re_procdef流程定义表中会有对应的数据信息.
*/
@Test
public void deployFlow(){
Deployment deployment = processEngine.getRepositoryService()
.createDeployment()
.name("test")
.addClasspathResource("diagrams/MyProcess.bpmn")
.addClasspathResource("diagrams/MyProcess.png")
.deploy();
System.out.println(deployment.getId());
System.out.println(deployment.getName());
}
/**
* 删除流程定义
*/
@Test
public void deleteProcessDefinition(){
RepositoryService repositoryService = this.processEngine.getRepositoryService();
/**
* 只能删除没有启动流程的流程定义。如果流程启动则抛出异常
*/
repositoryService.deleteDeployment("5004",true);//删除流程定义,级联删除启动的流程
}
/**
* 启动流程
* 启动完流程后在act_ru_execution表中会产生一条数据,这条数据为当前流程正在执行的任务,其中act_id_字段的值对应流程图节点的ID值 在act_ru_task表中会产生一条任务数据,execution_id_对应act_ru_execution主键,proc_inst_id_为流程实例ID,name_值为流程节点名称,assignee_字段为该待办当前的处理人
*/
@Test
public void flowStart(){
RuntimeService runtimeService = processEngine.getRuntimeService();
//使用流程定义key启动流程实例,key对象myProcess.bpmn文件中的id属性,对应act_re_procdef
//用key启动时按照罪行的流程版本定义启动
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("myProcess");
System.out.println(processInstance.getId()); //流程实例id
System.out.println(processInstance.getProcessDefinitionId());//流程定义id
RepositoryService repositoryService = processEngine.getRepositoryService();
ProcessDefinition processDefinition = repositoryService.getProcessDefinition(processInstance.getProcessDefinitionId());
System.out.println(processDefinition.getId());
System.out.println(processDefinition.getKey());
}
/**
* 查询当前人的任务
*/
@Test
public void findMyPersonTask (){
String assignee= "张三";
List<Task> taskList = this.processEngine.getTaskService()
.createTaskQuery()//创建查询对象
.taskAssignee(assignee)//制定要查询的人
.list();
if(taskList !=null && !taskList.isEmpty()){
for (Task task:taskList){
System.out.println("待办任务id:" + task.getId() + " ");
System.out.println("任务名称:" + task.getName() + " ");
System.out.println("任务创建时间:" + task.getCreateTime() + " ");
System.out.println("任务办理人:" + task.getAssignee() + " ");
}
}
}
/**
*推进工作流进程
*
*/
@Test
public void completeTask2(){
String taskId = "15002";
Map variables = new HashMap<>();
variables.put("message", "同意");
this.processEngine.getTaskService()//获取任务service
.complete(taskId,variables);
System.out.println("完成任务,任务id:"+taskId);
}
/**
*获取form设置
*
*/
@Test
public void getFormProperties(){
String taskId = "2504";
List<FormProperty> list = this.processEngine.getFormService().getTaskFormData(taskId).getFormProperties();
if(list!=null && list.size()>0){
for(FormProperty formProperty:list){
formProperty.getType();
System.out.println(formProperty.getId() + " " + formProperty.getName() + " " +formProperty.getValue());
}
}
}
注意事项:
activiti设置表单只保存表单设置,但是应用中录入的值是不保存的,需要系统自行开发保存
阅读全文
0 0
- 工作流 快速启动
- 【工作流】工作流快速入门
- 快速掌握JBPM工作流
- QuickFlow工作流启动失败
- EBS之工作流启动
- 启动工作流权限问题
- SharePoint 工作流无法启动?
- 工作流-流程启动
- Informatica 使用命令启动工作流
- Informatica 启动、停止工作流命令
- 高级工作流的启动方法
- 快速启动
- 66编程:工作流之快速开发
- 准备启动 .net 版本的 工作流引擎
- Shark 工作流研究3-启动流程过程
- CRM2011通过ribbon按钮启动工作流
- Jbpm5_创建和启动自定义工作流
- MOSS2010 工作流不能自动启动问题,有关自动启动工作流的问题 我会继续更新
- 最优二叉树概念 (哈夫曼树)
- javascript笔记2017/8/21-跳转到子页,输入信息,返回到父页
- 较快入门postman,使用postman玩转接口测试 一
- php __call 与 __callStatic对比
- Dubbo+Zookeeper+Spring的demo--远程调用初探
- 工作流 快速启动
- 后缀式求值
- 【转载】AJAX
- RSA公钥、私钥生成,详细讲解
- case when then else end
- Thrift 在Windows下的安装与实例 vs2010
- Linux notes:正则表达式2--Sed
- Bootstrap去掉body背景颜色
- 166. Fraction to Recurring Decimal