spring-activiti 一些操作

一、bpmn文件部署

    @Auroward
	RepositoryService rep;
	//通过流区创建一个工作流对象
	rep.createDeployment().addInputStream(filename, is).deploy();
	
	//涉及的表
	act_re_deployment: 流程定义部署表,每部署一次就增加一条记录
	act_re_procdef :流程定义表,部署每个新的流程定义都会在这张表中增加一条记录
	act_ge_bytearray :流程资源表,流程部署的 bpmn文件和png图片会保存在该表中
	

二、发起一个流程

    @Autowired
	IdentityService identityservice;
    @Auroward
	RuntimeService runtimeservice;
	
	//添加与业务之间的关系
	identityservice.setAuthenticatedUserId(“业务key-连接业务数据和流程数据,一般使用表的主键”);
	//启动
	ProcessInstance instance=runtimeservice.startProcessInstanceByKey("业务流程key",“业务key”,“变量”);
	
	//涉及的表
	act_hi_actinst 流程实例执行历史
    act_hi_identitylink 流程的参与用户的历史信息
    act_hi_procinst 流程实例历史信息
    act_hi_taskinst 流程任务历史信息
    act_ru_execution 流程执行信息
    act_ru_identitylink 流程的参与用户信息
    act_ru_task 任务信息

三、查找任务

    @Autowired
	TaskService taskservice;
	@Auroward
	RuntimeService runtimeservice;
	
	//一、添加与业务之间的关系
	List<Task> tasks=taskservice.createTaskQuery().taskAssignee(“指定用户“).taskName("指定名称").listPage(“第几页”, “每页几条
	
    //二、根据taskId查找任务
    Task task = taskservice.createTaskQuery().taskId(“任务id”).singleResult();
    /**
     * task.getProcessInstanceId() 流程实例id
     */
	ProcessInstance process = runservice.createProcessInstanceQuery().processInstanceId(task.getProcessInstanceId()).singleResult();

四、提交/完成任务

    @Autowired
	TaskService taskservice;
	
	//声明责任人--如果省略了这一步,任务不回向下走
	taskservice.claim("要声明的任务", “用户,不可为空“);
	//完成任务(变量可以为空,一般用于指派下一个人)
	taskservice.complete("要声明的任务", “变量”);

五、流程定义的查询

    @Autowired
	RepositoryService rep;
	
	//
	List<ProcessDefinition> list =  rep.createProcessDefinitionQuery().listPage(“第几页”, “每页几条”)
	// 输出流程定义的信息
    for (ProcessDefinition processDefinition : list) {
        System.out.println("流程定义的ID:" + processDefinition.getId());
        System.out.println("流程定义的name:" + processDefinition.getName());
        System.out.println("流程定义的key:" + processDefinition.getKey());
        System.out.println("流程定义的version:" + processDefinition.getVersion());
        System.out.println("流程部署的id:" + processDefinition.getDeploymentId());
    }

六、流程的删除

    @Autowired
	RepositoryService rep;
	
	// 设置为TRUE 级联删除流程定义,及时流程有实例启动,也可以删除,设置为false 非级联删除操作。
	rep.deleteDeployment(“流程标识”, true);

七、流程历史信息查看

    @Autowired
	HistoryService histiryservice;
	
	// 创建一个历史流程实例对象
	HistoricProcessInstanceQuery his = histiryservice.createHistoricProcessInstanceQuery()
	//给定id
	HistoricProcessInstanceQuery process = his.processDefinitionId("");
	//给定key
	HistoricProcessInstanceQuery process = his.processDefinitionKey("");
	//只选择由给定用户启动的历史流程实例。
	process = process.startedBy("用户标识");
	//只选择完成的
	process = process.finished();
	//历史流程实例
	List<HistoricProcessInstance> info = process.listPage(firstrow, rowCount);

八、指派任务

    @Autowired
	TaskService taskservice;
	
	//  指派的第一种方式
    taskService.setAssignee(task.getId(), "jack");
      
    //  指派的第二种方式
    taskService.deleteCandidateUser(task.getId(), "tom");
    taskService.addCandidateUser(task.getId(), "jack");

九、委派任务

    @Autowired
	TaskService taskservice;
	
	//  将任务进行委派
    taskService.delegateTask(task.getId(), "rose");
    //被委派人办理任务后,委派人标记任务已完成
    taskService.resolveTask(task.getId());

十、放回任务

    @Autowired
	TaskService taskservice;
	
	//  重新放回去
    taskService.setAssignee(task.getId(), null);
    taskService.unclaim(task.getId());

十一、回退任务

1. 找到任务
2. 找到当前实例历史执行记录
3. 拿到上一步任务节点
4. 记录当前节点的流转方向
5. 清除当前节点的流转方向
6. 将当前节点指向回退的节点
7. 完成当前节点任务
8. 查询此任务,将回退节点的执行人重新赋值到该节点
9. 恢复当前节点的流转方向

十二、终止任务

流程基本与回退任务一致,只是把回退节点换成结束节点即可
  • 8
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值