我正在製作一個使用Activiti的網絡應用程序,該應用程序有兩個並行任務,我希望用戶能夠一次完成。我不太清楚如何做到這一點。我已經提出了提交一個大型表單的想法,然後將分裂在服務器上,但我不知道如何去做這件事。我理想地一次提交兩份表格似乎是合乎邏輯的方式,但我不確定這是否可能。JSP Servlet/Activiti - 是否有辦法一次完成2個任務一次完成2個任務?
我的JSP形式:
<form action="CompleteTask" method="post">
<c:forEach items="${formProperties}" var="property" varStatus="status">
${property.getName()}:
<br />
<c:set var="type" value="${property.getType().getName()}" />
<c:if test="${type == 'string'}">
<c:if test="${property.isRequired() == 'true' }">
<input type="text" name="${property.getId()}" value="${property.getValue()}" required /><br />
</c:if>
<c:if test="${property.isRequired() == 'false' }">
<input type="text" name="${property.getId()}" value="" /><br />
</c:if>
</c:if>
<c:if test="${type == 'long'}">
<c:if test="${property.isRequired() == 'true' }">
<input type="text" name="${property.getId()}" value="${property.getValue()}" required /><br />
</c:if>
<c:if test="${property.isRequired() == 'false' }">
<input type="text" name="${property.getId()}" value="" /><br />
</c:if>
</c:if>
<c:if test="${type == 'date'}">
<c:if test="${property.isRequired() == 'true' }">
<input type="date" name="${property.getId()}" value="" required /><br />
</c:if>
<c:if test="${property.isRequired() == 'false' }">
<input type="date" name="${property.getId()}" value="" /><br />
</c:if>
</c:if>
<c:if test="${type == 'enum'}">
<select name="${property.getId()}">
<c:forEach var="entry" items='${property.getType().getInformation("values")}'>
<option value="${entry.key}">${entry.value}</option>
</c:forEach>
</select><br /><br />
</c:if>
</c:forEach>
<input type="hidden" id="taskId" name="taskId" value="${taskList.get(0).getId()}" /><br />
</form>
這種形式是在一個foreach循環,使多個版本均採用取決於有多少任務(在這種情況下2)。爲完成任務
我當前的servlet代碼:
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
Map<String, Object> params = new HashMap<String, Object>();
Enumeration<String> parameterNames = request.getParameterNames();
while (parameterNames.hasMoreElements()) {
String paramName = parameterNames.nextElement();
String[] paramValues = request.getParameterValues(paramName);
String paramValue = paramValues[0];
if(!paramName.equals("submit")){
System.out.println(paramName+ " - " + paramValue);
params.put(paramName, paramValue);
}
}
String taskId = request.getParameter("taskId");
TaskService taskService = processEngine.getTaskService();
Task t = taskService.createTaskQuery().taskId(taskId).singleResult();
taskService.complete(t.getId(), params);