到目前为止,我正在设计一个工作流,我已经能够像上面一样设计它。我的问题是
到目前为止,为了实现这一点,我在完成之前引入了用户任务new和归档,并添加了两个名为归档和完成的表单变量作为布尔值。
根据他选择填充的表单变量,我进一步进行。
但在这种情况下,我不能根据用户是否具有存档和完成权限来限制用户,所有用户都将显示这两个选项。
有没有其他方法可以实现这一点,我对Activiti、工作流和bpmn一般都很陌生。任何帮助都将不胜感激,提前感谢
直接将过渡设置为任务并根据以下模式设置过渡ID:
// Source: http://forums.activiti.org/content/how-get-all-possible-flows-current-activity
public List<String> getPossibleTransitionIds(long processInstanceId, String taskId) {
RepositoryServiceImpl repoServiceImpl = (RepositoryServiceImpl) repositoryService;
List<String> possibleTransitionIds = new ArrayList<String>();
ReadOnlyProcessDefinition processDef = repoServiceImpl.getDeployedProcessDefinition(processInstance.getProcessDefinitionId());
PvmActivity activity = processDef.findActivity(taskId);
for (PvmTransition pvmTransition : activity.getOutgoingTransitions()) {
String transitionId = extractTransitionId(pvmTransition);
if (transitionId != null) {
possibleTransitionIds.add(transitionId);
}
}
return possibleTransitionIds;
}
用户选择呈现的过渡ID之一。Bussines层检查用户的权限并移动流程。将选定的过渡设置为流程变量并解析任务。
Map<String, Object> variableMap = new HashMap<String, Object>();
variableMap.put("selectedTransition", selectedTransition);
taskService.resolveTask(taskId, variableMap);
在每个转换中都必须设置一个条件表达式${selectedTranpse=='
<sequenceFlow id="newTask_complete" name="Complete" sourceRef="newTask" targetRef="completeTask">
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${selectedTransition == 'complete'}]]></conditionExpression>
</sequenceFlow>