Activiti服務類- FormService服務類


轉自:https://www.cnblogs.com/liuqing576598117/p/9814953.html

1.獲取
//通過流程定義ID獲取表單字段集合
StartFormData startFormData = formService.getStartFormData(processDefinitionId);

TaskFormData taskFormData = formService.getTaskFormData(taskId);//內置表單(直接在流程中定義)
Object renderedTaskForm = formService.getRenderedTaskForm(taskId);//這個方法是返回一個純文本的(外置表單(一個.form結尾的文件,),可以是一個div標簽)
外置表單判斷:
流程啟動時:boolean hasStartFormKey = processDefinition.hasStartFormKey();
流程中:TaskFormData taskFormData = formService.getTaskFormData(taskId);
boolean key = taskFormData.getFormKey()


2.任務簽收
taskService.claim(taskId, userId);

//數據展示

復制代碼
TaskFormData taskFormData = formService.getTaskFormData(taskId);//內置表單(直接在流程中定義)
if (taskFormData.getFormKey() != null) {
  Object renderedTaskForm = formService.getRenderedTaskForm(taskId);//這個方法是返回一個純文本的(外置表單(一個.form結尾的文件,),可以是一個div標簽)
  Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
  mav.addObject("task", task);
  mav.addObject("taskFormData", renderedTaskForm);
  mav.addObject("hasFormKey", true);
} else {
  mav.addObject("taskFormData", taskFormData);
}
復制代碼

 

3.自定義表單引擎

復制代碼
/**
 * Javascript表單字段
 *
 */
public class JavascriptFormType extends AbstractFormType {
 
    @Override
    public String getName() {
        return "javascript";
    }
 
    @Override
    public Object convertFormValueToModelValue(String propertyValue) {
        return propertyValue;
    }
 
    @Override
    public String convertModelValueToFormValue(Object modelValue) {
        return (String) modelValue;
    }
}
復制代碼
復制代碼
/**
 * 自定義表單引擎
 *
 */
public class MyFormEngine implements FormEngine {
 
    @Override
    public String getName() {
        return "myformengine";
    }
 
    @Override
    public Object renderStartForm(StartFormData startForm) {
        javax.swing.JButton jButton = new javax.swing.JButton();
        jButton.setName("My Start Form Button");
        return jButton;
    }
 
    @Override
    public Object renderTaskForm(TaskFormData taskForm) {
        javax.swing.JButton jButton = new javax.swing.JButton();
        jButton.setName("My Task Form Button");
        return jButton;
    }
復制代碼

自定義表單引擎 : public class MyFormEngine implements FormEngine (供C/S架構使用,eg:Swing,AWT,SWT)
Javascript表單字段: public class JavascriptFormType extends AbstractFormType

復制代碼
<!-- 流程引擎配置的bean -->
<bean id="processEngineConfiguration"
class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">
<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/act" />
<property name="jdbcDriver" value="com.mysql.jdbc.Driver" />
<property name="jdbcUsername" value="root" />
<property name="jdbcPassword" value="123456" />
<property name="databaseSchemaUpdate" value="true" />

<property name="jobExecutorActivate" value="false" />

<!-- 自定義表單字段類型 -->
<property name="customFormTypes">
<list>
  <bean class="me.kafeitu.activiti.chapter6.form.JavascriptFormType" />
</list>
</property>

<!-- 自定義表單引擎 -->
<property name="customFormEngines">
<list>
  <bean class="me.kafeitu.activiti.chapter6.form.MyFormEngine" />
</list>
</property>
</bean>
復制代碼

 

5. 提交表單字段並啟動一個新的流程實例

復制代碼
//從請求中獲取表單數據,然后啟動流程
Map<String, String> formValues = new HashMap<String, String>();
if (hasStartFormKey) { // formkey表單
  Map<String, String[]> parameterMap = request.getParameterMap();
  Set<Entry<String, String[]>> entrySet = parameterMap.entrySet();
  for (Entry<String, String[]> entry : entrySet) {
    String key = entry.getKey();
    formValues.put(key, entry.getValue()[0]);
  }
} else { // 動態表單
  // 先讀取表單字段在根據表單字段的ID讀取請求參數值
  StartFormData formData = formService.getStartFormData(pdid);

  // 從請求中獲取表單字段的值
  List<FormProperty> formProperties = formData.getFormProperties();
  for (FormProperty formProperty : formProperties) {
    String value = request.getParameter(formProperty.getId());
    formValues.put(formProperty.getId(), value);
  }
}
ProcessInstance processInstance = formService.submitStartFormData(pdid, formValues


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM