flowable流程笔记(1)

 

1 RepositoryService类

      

      RepositoryService的获取:  (都是在processEngineConfiguration中实例化)

     repositoryService = processEngine.getRepositoryService();

      repositoryService可派生的类

          

          派生类的作用:

           

      DeploymentBuild的构造

    DeploymentBuilder deploymentBuilder = repositoryService
                .createDeployment()
                .category("测试分类")
                .name("名称");

      资源部署的方式

         

       classpath方式

    public  void  deploy(){
        DeploymentBuilder deploymentBuilder = repositoryService
                .createDeployment()
                .category("测试分类")
                .name("名称")
                .addClasspathResource("ceshi.bpmn20.xml");
        Deployment deploy = deploymentBuilder.deploy();
        System.out.println(deploy.getId());
    }

         文本部署方式

   public  void  addString(){
        String text= IoUtil.readFileAsString("ceshi.bpmn20.xml");
        DeploymentBuilder deploymentBuilder = repositoryService
                .createDeployment()
                .category("测试分类")
                .name("名称")
                .key("测试的key")
                .addString("ceshi.bpmn",text);
        Deployment deploy = deploymentBuilder.deploy();
        System.out.println(deploy.getId());
    }

             输入流方式

   public  void  addInputStream(){
        InputStream resourceAsStream = SpringTest.class.getClassLoader()
                .getResourceAsStream("ceshi.bpmn20.xml");
        DeploymentBuilder deploymentBuilder = repositoryService
                .createDeployment()
                .category("测试分类")
                .name("名称")
                .key("测试的key")
                .addInputStream("shareniu.bpmn",resourceAsStream);
        Deployment deploy = deploymentBuilder.deploy();
        System.out.println(deploy.getId());
    }

              压缩流方式

   public  void  addZipInputStream(){
        InputStream resourceAsStream = SpringTest.class.getClassLoader()
                .getResourceAsStream("1.zip");

        ZipInputStream zipInputStream=new ZipInputStream(resourceAsStream);
        DeploymentBuilder deploymentBuilder = repositoryService
                .createDeployment()
                .category("测试分类")
                .name("名称")
                .key("测试的key")
               .addZipInputStream(zipInputStream);
        Deployment deploy = deploymentBuilder.deploy();
        System.out.println(deploy.getId());
    }

         字节方式

   public  void  addBytes(){
        InputStream resourceAsStream = SpringTest.class.getClassLoader()
                .getResourceAsStream("ceshi.bpmn20.xml");
        String inputStreamName="分享牛";
        byte[] bytes = IoUtil.readInputStream(resourceAsStream, inputStreamName);
        DeploymentBuilder deploymentBuilder = repositoryService
                .createDeployment()
                .category("测试分类")
                .name("名称")
                .key("测试的key")
              .addBytes("ceshi.bpmn",bytes);
        Deployment deploy = deploymentBuilder.deploy();
        System.out.println(deploy.getId());
    }

           模型方式

    public void deploy() {
        String modelId = "c2d1a9c1-5ce4-11e9-b185-86ef18984e78";
        String category = "test测试";

        org.flowable.ui.modeler.domain.Model model = 
          modelCoreServiceImpl.getModel(modelId);
        byte[] bpmnBytes = modelCoreServiceImpl.getBpmnXML(model);
        String processName = model.getName();
        if (!StringUtils.endsWith(processName, ".bpmn20.xml")) {
            processName += ".bpmn20.xml";
        }
        //部署
        Deployment deployment = repositoryService.createDeployment()
                .addBytes(processName, bpmnBytes)
                .name(model.getName())
                .key(model.getKey())
                .deploy();
        System.out.println("流程部署deploy:" + deployment + "  分类:" + category);
    }

       部署设计的表

     

        一些相关的配置

   <bean id="processEngineConfiguration" 
      class="org.flowable.spring.SpringProcessEngineConfiguration">
        <!--是否部署资源的时候生成流程图-->
        <property name="createDiagramOnDeploy" value="true"></property>

        <!--设置字体-->
        <property name="activityFontName" value="宋体"></property>
        <property name="labelFontName" value="宋体"></property>
        <property name="annotationFontName" value="宋体"></property>
    </bean>

      查询流程定义相关的数据

   public  void  createProcessDefinitionQuery(){
        List<ProcessDefinition> list = repositoryService.createProcessDefinitionQuery()
                .latestVersion() //查询的时候最后的一个版本
                .processDefinitionName("测试流程")
               // .processDefinitionCategory("")
                .list();
    }

      删除流程实例

    public  void  deleteDeployment(){
        String deploymentId="42501";
       repositoryService.deleteDeployment(deploymentId);
    }

    /**
     * 级联删除会删除当前流程定义下面所有的流程实例
     */
    @Test
    public  void  deleteDeploymentCaseCade(){
        String deploymentId="40001";
       repositoryService.deleteDeployment(deploymentId,true);
    }

       获取部署实例的图片

   public  void  viewImage() throws IOException {
        String deploymentId="37501";
        List<String> deploymentResourceNames = repositoryService
                .getDeploymentResourceNames(deploymentId);

        System.out.println(deploymentResourceNames);

        String imageName=null;
        for (String name : deploymentResourceNames){
            if (name.indexOf(".png")>0){
                imageName=name;
            }
        }
        System.out.println(imageName);
        if (imageName!=null){
            File file=new File("C:/project/"+imageName);
            InputStream resourceAsStream = 
            repositoryService.getResourceAsStream(deploymentId, imageName);
            FileUtils.copyInputStreamToFile(resourceAsStream,file);
        }

    }

  部署对象的查询以及sql查询

    public  void  createDeploymentQuery(){
        List<Deployment> list = repositoryService.createDeploymentQuery()
                .deploymentCategory("测试分类")
                .deploymentId("37501")
                .list();
    }
    //sql查询
    public  void  createNativeDeploymentQuery(){
        List<Deployment> list = repositoryService.createNativeDeploymentQuery()
                .sql("select * from ACT_RE_DEPLOYMENT").list();
    }

ID生成器的使用

    配置bean

   <bean id="processEngineConfiguration" 
     class="com.shareniu.bpmn.spring.SpringProcessEngineConfiguration">
        <!--<property name="idBlockSize" value="1000"></property>--> id值每个加1000
        <property name="idGenerator" ref="ceshiUuidGenerator"></property>
   </bean>
   <bean id="strongUuidGenerator" 
    class="org.flowable.common.engine.impl.persistence.StrongUuidGenerator"></bean>
   <bean id="ceshiUuidGenerator" class="com.shareniu.bpmn.CeshiUuidGenerator"></bean>
 

    重写相关的类

public class CeshiUuidGenerator implements IdGenerator {
    public String getNextId() {
        return "ceshi_"+UUID.randomUUID().toString();
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_42310146/article/details/89394978