<bpmn2:userTask id="UserTask_4" camunda:assignee="${initiator}" camunda:formKey="embedded:app:forms/chooseOption.html" name="Choose Option test"><bpmn2:userTask id="UserTask_4" camunda:assignee="${initiator}" camunda:formKey="embedded:app:forms/chooseOption.html" name="Choose Option test" translate="xyz">12:18:14,897 SEVERE [org.camunda.bpm.engine.impl.interceptor.CommandContext] (ServerService Thread Pool -- 407) Error while closing command context: org.camunda.bpm.engine.ProcessEngineException: cvc-complex-type.3.2.2: Attribute 'translate' is not allowed to appear in element 'bpmn2:userTask'. | webstore.bpmn | line 106 | column 192
at org.camunda.bpm.engine.impl.util.xml.Parse.throwExceptionForErrors(Parse.java:188) [camunda-engine-7.2.0.jar:7.2.0]
at org.camunda.bpm.engine.impl.bpmn.parser.BpmnParse.execute(BpmnParse.java:247) [camunda-engine-7.2.0.jar:7.2.0]
at org.camunda.bpm.engine.impl.bpmn.deployer.BpmnDeployer.deploy(BpmnDeployer.java:106) [camunda-engine-7.2.0.jar:7.2.0]
at org.camunda.bpm.engine.impl.persistence.deploy.DeploymentCache.deploy(DeploymentCache.java:58) [camunda-engine-7.2.0.jar:7.2.0]
at org.camunda.bpm.engine.impl.persistence.entity.DeploymentManager.insertDeployment(DeploymentManager.java:44) [camunda-engine-7.2.0.jar:7.2.0]...
In the process definition, add a UserTask with a tasklistener defined on the 'create' event, which calls a class that extends org.camunda.bpm.engine.delegate. Implement the #notify(DelegateTask) method to modify the delegateTask's name and description (and other fields you care to) with the text you want to.
If I need to present the user with different language version of a form, instead of defining a 'camunda:formKey' attribute on the userTask, I define a 'camunda:formHandlerClass' attribute, the value of which is a class that extends DefaultTaskFormHandler and overrides the #setFormKey(ExecutionEntity, Expression, String) method to pick the form for the user's language choice.
<userTask id="task4711" name="Assign i18n Task" camunda:formHandlerClass="com.example.MyI18nFormHandler">
<extensionElements>
<camunda:taskListener event="create" class="com.example.AssignI18nTask" />
</extensionElements>
</userTask>
public class AssignI18nTask implements org.camunda.bpm.engine.delegate.TaskListener {
@Override
public void notify(DelegateTask delegateTask) {
String language = determineLanguageForAssignee(); // however you do that
delegateTask.setName(getTaskNameInLanguage(language); // from resource bundle?
delegateTask.setDescription(getTaskDescriptionInLanguage(language)); // same...
...
}
}
public class MyI18nFormHandler extends org.camunda.bpm.engine.impl.form.handler.DefaultTaskFormHandler {
@Override
public TaskFormData createTaskForm(TaskEntity task) {
String language = determineLanguageForViewer(); // again, up to you how
task.getTaskDefinition().setFormKey(
new FixedValue("my/forms/some_" + language + ".form");
return super.createTaskForm(task);
}
}