activiti實戰系列之動態表單 formService 自定義變量類型


 

目前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


免責聲明!

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



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