我无法理解自定义表单类型。我想创建一个存储多个值的表单类型,即基本上像枚举一样。它只需要在名称上有所不同,以便进行渲染。
我上了这堂课:
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中给它了值。我希望我有道理。
答案 0 :(得分:1)
您对Community Edition表单渲染器的问题是表单渲染器无法访问执行(或任务)上下文。唯一可用的运行时数据是绑定到表单元素的变量。 这使得很难处理任何类型的复杂表单控件(这可能是Alfresco在其企业版中背弃了表单属性方法的原因)。 我在社区中创建了一个基于变量列表的简单枚举,但它是一个黑客。我将变量设置为CSV(例如bill,ted,geno,sally),创建了一个自定义渲染器,将其转换为下拉,然后将选定的结果绑定回同一个变量。 如果您使用默认的表单渲染器,这实际上是您可以使用的唯一方法。 如果你想做任何类型的非平凡形式,你将需要使用外部渲染引擎。