以前,我们使用activiti-5.15.1版本,并且具有formService.java类,因此下面的代码可以在其中工作。
FormService fs = ServiceFactory.getFormService();
fs.getTaskFormKey(task.getProcessDefinitionId(),task.getTaskDefinitionKey());
现在,我们正在升级activiti-7.0.0.SR1。但是没有FormService.java类。
我们尝试了ProcessDefinition类,并使用了getFormKey()方法,但该方法无法在其中使用。
我们正在寻找activiti-7.0.0.SR1中任务的获取表单密钥。 请提出实现此目标的方法。
答案 0 :(得分:0)
formProperties存在于BpmnModel中,您可以访问它以获取它;
希望为您提供帮助:
package com.goahead.demoactiviti7.controller.service;
import org.activiti.bpmn.model.BpmnModel;
import org.activiti.bpmn.model.FlowElement;
import org.activiti.bpmn.model.FormProperty;
import org.activiti.bpmn.model.UserTask;
import org.activiti.engine.RepositoryService;
import org.activiti.engine.TaskService;
import org.activiti.engine.task.Task;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.Collection;
import java.util.List;
public class FormService {
@Autowired
private TaskService taskService;
@Autowired
private RepositoryService repositoryService;
public List<FormProperty> getFormPropertiesFromBpmn(String processDefinitionId,String taskId) {
BpmnModel bpmnModel = repositoryService.getBpmnModel(processDefinitionId);
Collection<FlowElement> flowElementCollection = bpmnModel.getMainProcess().getFlowElements();
Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
if (task == null) {
System.out.println("taskid XXX is not existed.");
return null;
}
String taskDefinitionKey = task.getTaskDefinitionKey();
for (FlowElement flowElement: flowElementCollection) {
if ("UserTask".equals(flowElement.getClass().getSimpleName()) && taskDefinitionKey.equals(flowElement.getId())) {
return ((UserTask)flowElement).getFormProperties();
}
}
return null;
}
}