I am developing custom form property that is an email selector using a TwinColSelect. The heart of my issue is that I don't understand how to handle the data for the TwinColSelect. I need to prepopulate the property with some email addresses and then allow users to add their own as well. I will also need to get the email addresses selected in later email tasks to send the emails to these addresses.I have created the custom form property and successfully used it in Explorer. I have learned how to prepopulate the values using the examples from the book and even learned how to preselect values. My two questions are:1) How do I use the form values in the form definition (ID and Name) to populate the TwinColSelect. Mainly, how do I access the values I have predefined in the process definition?2) Later, when the user selects their own choices what do I use to access these choices in an email task?Code:<!–break–>My property renderer (I know, the code is really ugly right now): @Override
public Field getPropertyField(FormProperty formProperty) {
final TwinColSelect select = new TwinColSelect("Send status emails to:");
Object formValues = formProperty.getType().getInformation("values");
// Put some data in the select
String emailList[] = {"Email one", "Email two", "Email three"};
for (int i=0; i<emailList.length; i++)
select.addItem(emailList);
//Set various list properties
select.setLeftColumnCaption("Choices");
select.setRightColumnCaption("Going to…");
select.setRows(5);
select.setNewItemsAllowed(true);
// Preselect a few items
//Remove the first and last character
String temp = formProperty.getValue();
if (temp != null){
temp = formProperty.getValue().substring(1);
temp = temp.substring(0, temp.length() - 1);
int numberOfEmails = StringUtils.countMatches(temp, ", ") + 1;
String[] emailData = new String[numberOfEmails];
if (numberOfEmails > 1){
emailData = temp.split(", ");
}else{
emailData[0] = temp;
}
//Be sure new added items make it in the list
for (int i=0; i<emailData.length; i++){
select.addItem(emailData);
}
HashSet<String> preselected = new HashSet<String>();
Collections.addAll(preselected, emailData);
select.setValue(preselected);
}
return select;
}The task definition with the emailChecklist property defined: <userTask id="usertask1" name="First task" activiti:assignee="erics">
<extensionElements>
<activiti:formProperty id="desc" name="Decsription" type="textArea"></activiti:formProperty>
<activiti:formProperty id="emails" name="Emails" type="emailChecklist">
<activiti:value id="Testing1" name="Testing1"></activiti:value>
<activiti:value id="Testing2" name="Testing2"></activiti:value>
</activiti:formProperty>
</extensionElements>
</userTask>