2015-04-21 3 views
1

У меня возникают проблемы с созданием типов пользовательских форм. Я хочу создать тип формы, который хранит несколько значений, т. Е. В основном действует как перечисление. Для целей рендеринга это должно быть иначе.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> 

Я сделать веб-приложение, и я могу получить имя и идентификатор тип формы обратно, но значения возвращают значение null, даже если я дал значения в дизайнере Activiti. Надеюсь, у меня есть смысл.

+0

Также я создаю формы самостоятельно динамически в jsp. – NeedsHelp

ответ

1

Проблема, с которой вы сталкиваетесь с средствами визуализации форм сообщества, заключается в том, что средство визуализации формы не имеет доступа к контексту выполнения (или задачи). Единственными доступными данными во время выполнения являются переменная, которая привязана к элементу формы. Это затрудняет управление любыми сложными формами управления (и, вероятно, именно поэтому Alfresco отвернулись от подхода к свойствам формы в своей корпоративной редакции). Я создал простой enum, основанный на списке переменных в сообществе, но это был взлом. Я установил переменную в CSV (например, bill, ted, geno, sally), создав собственный рендерер, который превратил это в раскрывающееся меню, а затем связал выбранный результат обратно в одну и ту же переменную. Это действительно единственный подход, который вы можете использовать, если используете средства рендеринга по умолчанию. Если вы хотите сделать какую-либо нетривиальную форму, вам нужно будет использовать внешний механизм рендеринга.

Смежные вопросы