activiti学习笔记(六)FormService

FormService

  • 解析流程定义中表单项的配置
  • 提交表单的方式驱动用户节点流转
  • 获取自定义外部表单key

示例

首先编写流程定义文件:



  
    
      
        
      
    
    
      
        
      
    
    
    
  

从流程文件中可以看出在启动事件和用户任务节点都有表单,表单的属性用extensionElements标签包裹。

后台获取流程定义中配置的属性代码如下:

FormService formService = processEngine.getFormService();

// 获取表单key和启动节点表单数据
String formKey = formService.getStartFormKey(processDefinition.getId());
StartFormData startFormData = formService.getStartFormData(processDefinition.getId());
List formPropertyList = startFormData.getFormProperties();

// 提交开始节点的表单
Map properties = new HashMap();
properties.put("message","hello world");
ProcessInstance processInstance = formService.submitStartFormData(processDefinition.getId(),properties);

// 获取当前用户任务节点的表单数据
TaskService taskService = processEngine.getTaskService();
Task task1 = taskService.createTaskQuery()
                .processInstanceId(processInstance.getId())
                .singleResult();
TaskFormData taskFormData = formService.getTaskFormData(task1.getId());
logger.info("taskformData={}",taskFormData);

// 提交任务节点的表单
Map taskParams = new HashMap();
taskParams.put("yesOrNo","yes");
formService.submitTaskFormData(processDefinition.getId(),taskParams);

从上述示例中可知:

  1. 当执行submitStartFormData方法时根据流程定义id提交开始事件的表单后,自动发起流程并从开始节点提交到用户任务节点。
  2. 提交到用户任务节点后就可以查询任务节点的表单数据TaskFormData对象。
  3. 当执行submitTaskFormData方法时候,流程自动从当前节点提交到下个节点。
  4. 由于表单属性required参数为true,表示提交表单的时候这个参数一定要传,不然会抛异常。

你可能感兴趣的:(activiti学习笔记(六)FormService)