zoukankan      html  css  js  c++  java
  • JBPM4.4_管理流程定义

    1. 管理流程定义

    没有更新功能

    1.1. 部署流程定义

    注意区分DeploymentProcessDefinition

    1.1.1. 示例代码1:流程定义有关文件在classpath中

    String deploymentId = processEngine.getRepositoryService()

         .createDeployment()

         .addResourceFromClasspath("process/test.jpdl.xml")

    .addResourceFromClasspath("process/test.png")

    .deploy();

    1.1.2. 示例代码2:一次添加多个流程定义有关文件(要先打成zip包)

    String deploymentId = processEngine.getRepositoryService()

        .createDeployment()

        .addResourcesFromZipInputStream(zipInputStream)

        .deploy();

    1.1.3. 说明

    1, .addResourceFromClasspath(resource); 可以调用多次以添加多个文件。文件重复添加也不会报错。

    2, .addResourceFromInputStream(resourceName, inputStream)添加一个文件(使用InputStream)

    3, .addResourcesFromZipInputStream(zipInputStream)添加个文件,里面也可以有文件夹

    4, 以上方法可以在一起调用。

    1.2. 删除流程定义

    1.2.1. 示例代码1:删除流程定义,如果有关联的流程实例信息则报错

    repositoryService.deleteDeployment(deploymentId);

    1.2.2. ?示例代码2:删除流程定义,并删除关联的流程实例与历史信息

    repositoryService.deleteDeploymentCascade(deploymentId);

    关联:关联的流程实例,就是流程定义中执行过的那些实例【已经放到了历史表中,级联删除的就是同时删除那些执行过了的实例】,

    1.3. 查询流程定义

    1.3.1. 相关查询API说明:ProcessDefinitionQuery

    RepositoryService.createProcessDefinitionQuery()

    1.3.2. 示例代码1:查询所有流程定义

    // 1,构建查询

    ProcessDefinitionQuery pdQuery = processEngine.getRepositoryService()

        .createProcessDefinitionQuery()//

        .orderAsc(ProcessDefinitionQuery.PROPERTY_NAME)//

        .orderDesc(ProcessDefinitionQuery.PROPERTY_VERSION);

    // 2,查询出总数量与数据列表

    long count = pdQuery.count();

    List<ProcessDefinition> list = pdQuery.page(0, 100).list();// 分页:取出前100条记录

    // 3,显示结果

    System.out.println(count);

    for (ProcessDefinition pd : list) {

      System.out.println("id=" + pd.getId()//

        + ",deploymentId=" + pd.getDeploymentId()//

        + ",name=" + pd.getName()//

        + ",version=" + pd.getVersion()//

        + ",key=" + pd.getKey()); //

    }

    1.3.3. 示例代码2:查询所有最新版本的流程定义列表

    // 1,查询按version升序排序,则最大版本排在最后

    List<ProcessDefinition> all = processEngine.getRepositoryService()//

        .createProcessDefinitionQuery()//

        .orderAsc(ProcessDefinitionQuery.PROPERTY_VERSION)

        .list();

    // 2,过滤出所有不同Key的最新版本(因为最大版本在最后面)

    Map<String, ProcessDefinition> map = new HashMap<String, ProcessDefinition>(); // map的key是流程定义的key,map的vlaue是流程定义对象

    for (ProcessDefinition pd : all) {

      map.put(pd.getKey(), pd);

    }

    Collection<ProcessDefinition> result = map.values();

    // 3,显示结果

    for (ProcessDefinition pd : result) {

      System.out.println("deploymentId=" + pd.getDeploymentId()//

        + ", id=" + pd.getId()// 流程定义的id,格式:{key}-{version}

        + ", name=" + pd.getName()

        + ", key=" + pd.getKey()

        + ", version=" + pd.getVersion());

    }

    1.4. 获取部署对象中的文件资源内容

    // 资源的名称,就是 jbpm4_lob 表中的 NAME_ 列表值

    String deploymentId = "90001";

    String resourceName = "test.png"; 

    InputStream in = processEngine.getRepositoryService()

      .getResourceAsStream(deploymentId, resourceName);

    1.5. 获取流程图中某活动的坐标

    String processDefinitionId = "test-1"; // 流程定义的id

    String activityName = "start1"; // 活动的名称

    ActivityCoordinates c = processEngine.getRepositoryService()

        .getActivityCoordinates(processDefinitionId, activityName);

    System.out.println("x=" + c.getX()

    + ",y=" + c.getY()

    + ",width=" + c.getWidth()

    + ",height=" + c.getHeight());

  • 相关阅读:
    西电大第十六届程序设计竞赛 A-GRE
    浙南联合训练赛 B-Laptops
    STL之multimap
    Python编程练习:平方值格式化
    Python编程练习:使用 turtle 库完成玫瑰花的绘制
    Python编程练习:简单的闹钟提醒
    Python编程练习:使用 turtle 库完成叠边形的绘制
    Python编程练习:使用 turtle 库完成正方形的绘制
    Python编程练习:使用 turtle 库完成六边形的绘制
    Spark 介绍
  • 原文地址:https://www.cnblogs.com/justdoitba/p/8001636.html
Copyright © 2011-2022 走看看