目前Activiti默認支持的類型有String,long,enum,date,boolean,collection
要自定義字段類型,首先需要表單類型解析類
/** * @Author:LJ * @Description: activiti Javascript類型表單字段 * @Date: 2018/5/17 * @Modified By: */ public class JavascriptFormType extends AbstractFormType { /** * 把表單中的值轉換為實際的對象 * @param propertyValue * @return */ @Override public Object convertFormValueToModelValue(String propertyValue) { return propertyValue; } /** * 把實際對象的值轉換為表單中的值 * @param modelValue * @return */ @Override public String convertModelValueToFormValue(Object modelValue) { return (String) modelValue; } /** * 定義表單類型的標識符 * * @return */ @Override public String getName() { return "javascript"; } }
第二、在流程引擎中注冊解析類
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">
.... <!-- 自定義表單字段類型 --> <property name="customFormTypes"> <list> <bean class="me.kafeitu.activiti.form.JavascriptFormType" /> </list> </property> </bean> </beans>
擴展:SpringBoot方式注冊解析
package com.example.demo.config; import com.example.demo.config.formType.JavascriptFormType; import org.activiti.engine.form.AbstractFormType; import org.activiti.spring.SpringProcessEngineConfiguration; import org.springframework.beans.BeansException; import org.springframework.beans.factory.config.BeanPostProcessor; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; import java.util.Arrays; import java.util.List; /** * @Author:LJ * @Description: * @Date: 2018/3/21 * @Modified By: */ @Configuration public class ApplicationConfig extends WebMvcConfigurerAdapter {/** * 方式一 *@Author LJ */ @Bean public BeanPostProcessor activitiConfigurer() { return new BeanPostProcessor() { @Override public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException { if (bean instanceof SpringProcessEngineConfiguration) { List<AbstractFormType> customFormTypes = Arrays.<AbstractFormType>asList(new JavascriptFormType()); ((SpringProcessEngineConfiguration)bean).setCustomFormTypes(customFormTypes); } return bean; } @Override public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException { return bean; } }; } }
參考:
How to declare an Activiti custom FormType in a Spring Boot application