Activiti 常见操作(一)

流程的部署

ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
RepositoryService repositoryService = processEngine.getRepositoryService();
Deployment deployment = repositoryService.createDeployment()
      .addClasspathResource("approval.bpmn20.xml")
      .name("我的流程部署")
      .deploy();

1、ACT_RE_DEPLOYMENT多出一条记录。
2、ACT_RE_PROCDEF多出一条记录。
3、ACT_GE_BYTEARRAY多出几条信息,图片资源啥的。

流程的启动

RuntimeService runtimeService = processEngine.getRuntimeService();
Map<String, Object> map = Maps.newHashMap();
map.put("name", "zhangxingr");
map.put("sex", "man");
map.put("age", "21");
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("my-process", map);

1、ACT_HI_ACTINST增加了流程启动的信息。
2、ACT_HI_PROCINST增加了流程信息。
3、ACT_HI_IDENTITYLINK增加了记录。
4、ACT_HI_TASKINST增加了记录。
5、ACT_RU_EXECUTION增加了记录。
6、ACT_RU_IDENTITYLINK增加了记录。
7、ACT_RU_TASK增加了记录。

任务的查询

List<Task> list = processEngine.getTaskService()
    .createTaskQuery()
    .taskAssignee("王五")
    .list();

任务的处理

processEngine.getTaskService()
      .complete("7502");  //任务ID

1、ACT_HI_ACTINST增加了一条记录。
2、ACT_RU_IDENTITYLINK多了一条参与者记录。
3、ACT_HI_TASKINST增加了记录。
4、ACT_RU_EXECUTION增加了记录。
5、ACT_RU_TASK增加了记录,减少了一条记录。

流程定义查询

List<ProcessDefinition> list = processEngine.getRepositoryService()//与流程定义和部署对象相关的Service
    .createProcessDefinitionQuery().list();

流程状态查询

ProcessInstance pi = processEngine.getRuntimeService() // 获取运行时Service
    .createProcessInstanceQuery() // 创建流程实例查询
    .processInstanceId("2501") // 用流程实例id查询
    .singleResult();

流程定义删除

processEngine.getRepositoryService()
      .deleteDeployment("deploymentId", true);

流程资源查看

/**将生成图片放到文件夹下*/
String deploymentId = "801";
//获取图片资源名称
List<String> list = processEngine.getRepositoryService()//
    .getDeploymentResourceNames(deploymentId);
//定义图片资源的名称
String resourceName = "";
if(list!=null && list.size()>0){
    for(String name:list){
          if(name.indexOf(".png")>=0){
                resourceName = name;
          }
    }
}
//获取图片的输入流
InputStream in = processEngine.getRepositoryService()//
      .getResourceAsStream(deploymentId, resourceName);
//将图片生成到D盘的目录下
File file = new File("D:/"+resourceName);
//将输入流的图片写到D盘下
FileUtils.copyInputStreamToFile(in, file);

查询出流程定义文档。主要查的是图片,用于显示流程用。deploymentId为流程部署ID,resourceName为act_ge_bytearray表中NAME_列的值,使用repositoryService的getDeploymentResourceNames方法可以获取指定部署下得所有文件的名称,使用repositoryService的getResourceAsStream方法传入部署ID和资源图片名称可以获取部署下指定名称文件的输入流,最后的有关IO流的操作,使用FileUtils工具的copyInputStreamToFile方法完成流程流程到文件的拷贝,将资源文件以流的形式输出到指定文件夹下。

历史活动查询(包含流程的开始和结束)

List<HistoricActivityInstance>  list = processEngine.getHistoryService()
    .createHistoricActivityInstanceQuery() // 创建历史活动实例查询
    .processInstanceId("2501") // 执行流程实例id
    .list();

历史任务查询(只包含任务)

List<HistoricTaskInstance> list = processEngine.getHistoryService() // 历史相关Service
    .createHistoricTaskInstanceQuery() // 创建历史任务实例查询
    .processInstanceId("2501") // 用流程实例id查询
    .list(); 

流程的挂起

RepositoryService repositoryService = processEngine.getRepositoryService();
String processDefinitionKey ="purchasingflow";
//根据流程定义的key暂停一个流程定义,并且级联挂起该流程定义下的流程实例
repositoryService.suspendProcessDefinitionByKey(processDefinitionKey, true, null);

单个流程实例的挂起

RuntimeService runtimeService = engine.getRuntimeService();
String processInstanceId="1801";
//根据一个流程实例的id挂起该流程实例
runtimeService.suspendProcessInstanceById(processInstanceId);
原文地址:https://www.cnblogs.com/feiqiangsheng/p/13222045.html