activiti的一些记录

1、根据task的id获取task:

       TaskService taskService = getTaskService();
       Task task = taskService.createTaskQuery().taskId(taskId).singleResult();

2、获取图片的方式:

       public static InputStream getProcessDefinitionPicture(String deploymentId, String resourceName) {
            RepositoryService service = getRepositoryService();
            ProcessDefinitionQuery processDefQuery = service.createProcessDefinitionQuery().deploymentId(deploymentId);
            ProcessDefinition def = processDefQuery.singleResult();
            String resName = def.getDiagramResourceName();
            return service.getResourceAsStream(deploymentId, resName);
        }

        InputStream io = ProcessUtil.getProcessDefinitionPicture(tempDef.getDeploymentId(), tempDef.getResourceName());
        //得到图片的二进制数据,以二进制封装得到数据,具有通用性  
        byte[] data = readInputStream(io);  
         //new一个文件对象用来保存图片,默认保存当前工程根目录  
         File imageFile = new File("d://test.png");  
         //创建输出流  
         FileOutputStream outStream = new FileOutputStream(imageFile);  
         //写入数据  
         outStream.write(data);  
         //关闭输出流  
         outStream.close();  

        public static byte[] readInputStream(InputStream inStream) throws Exception{  
            ByteArrayOutputStream outStream = new ByteArrayOutputStream();  
            //创建一个Buffer字符串  
            byte[] buffer = new byte[1024];  
            //每次读取的字符串长度,如果为-1,代表全部读取完毕  
            int len = 0;  
            //使用一个输入流从buffer里把数据读取出来  
            while( (len=inStream.read(buffer)) != -1 ){  
                //用输出流往buffer里写入数据,中间参数代表从哪个位置开始读,len代表读取的长度  
                outStream.write(buffer, 0, len);  
            }  
           //关闭输入流  
           inStream.close();  
           //把outStream里的数据写入内存  
           return outStream.toByteArray();  
       }  

 3、根据流程定义Key和版本号获取该流程所有Task定义,这个可以获取流程定义中Task节点的名称和ID等,代码如下:

          /**
        * 根据流程定义ID获取该流程所有任务定义
        * @param processDefinitionId  流程定义ID
        * @param processDefinitionVersion 版本号
        * @return
        */
        public static List<TaskDefinition> getUserTaskByProcessDefinitionId(String processDefinitionId, int processDefinitionVersion) {
            List<TaskDefinition> taskDefList = new ArrayList<TaskDefinition>();  
            RepositoryService repositoryService = getRepositoryService();   
            ProcessDefinition def = repositoryService.createProcessDefinitionQuery()
            processDefinitionKey(processDefinitionId).processDefinitionVersion(processDefinitionVersion).singleResult();  
            ProcessDefinitionEntity processDefinitionEntity = (ProcessDefinitionEntity) ((RepositoryServiceImpl) repositoryService)
  .getDeployedProcessDefinition(def.getId());    
            List<ActivityImpl> activityImplList = processDefinitionEntity.getActivities();  
            for(ActivityImpl tempActivity : activityImplList) {
                  Object type =  tempActivity.getProperty("type");
                  if("userTask".equals(type)) {
                       TaskDefinition taskDefinition = ((UserTaskActivityBehavior)tempActivity.getActivityBehavior()).getTaskDefinition();
                       taskDefList.add(taskDefinition);
                  }
           }   
           return taskDefList;
   }

     测试代码如下:

     List<TaskDefinition> taskDefList = TaskUtil.getUserTaskByProcessDefinitionId("myProcess", 1);

    for(TaskDefinition tempTaskDef : taskDefList) {
          System.out.println("任务名称:" + tempTaskDef.getNameExpression().getExpressionText());
          System.out.println("任务ID:" + tempTaskDef.getKey());
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值