Activiti - 如何获取自定义表单类型以保存多个值?

时间:2015-04-21 16:19:12

标签: java jsp activiti

我无法理解自定义表单类型。我想创建一个存储多个值的表单类型,即基本上像枚举一样。它只需要在名称上有所不同,以便进行渲染。

我上了这堂课:

import org.activiti.engine.form.AbstractFormType;

public class ImpactedSitesFormType  extends AbstractFormType {

         public static final String TYPE_NAME = "impactedSite";

         public String getName() {
           return TYPE_NAME;
         }

         public Object convertFormValueToModelValue(String propertyValue) {
           Integer impactedSite = Integer.valueOf(propertyValue);
           return impactedSite;
         }

         public String convertModelValueToFormValue(Object modelValue) {
           if (modelValue == null) {
             return null;
           }
           return modelValue.toString();

         }

       }

我将其添加到我的activiti.cfg.xml:

<property name="customFormTypes">
            <list>
                <bean class="ImpactedSitesFormType"/>
            </list>
</property>

我正在创建一个webapp,我可以返回表单类型的名称和id,但是值返回null,即使我在Activiti designer中给它了值。我希望我有道理。

1 个答案:

答案 0 :(得分:1)

您对Community Edition表单渲染器的问题是表单渲染器无法访问执行(或任务)上下文。唯一可用的运行时数据是绑定到表单元素的变量。 这使得很难处理任何类型的复杂表单控件(这可能是Alfresco在其企业版中背弃了表单属性方法的原因)。 我在社区中创建了一个基于变量列表的简单枚举,但它是一个黑客。我将变量设置为CSV(例如bill,ted,geno,sally),创建了一个自定义渲染器,将其转换为下拉,然后将选定的结果绑定回同一个变量。 如果您使用默认的表单渲染器,这实际上是您可以使用的唯一方法。 如果你想做任何类型的非平凡形式,你将需要使用外部渲染引擎。