提问者:小点点

在工作流激活中定义多个可能的路径


到目前为止,我正在设计一个工作流,我已经能够像上面一样设计它。我的问题是

  1. 我开始工作流程。
  2. 当前用户选项以执行两个可能的操作之一(存档和在图表中完成)
  3. 我还需要授权他是否可以存档或完成或两者兼而有之。
  4. 用户可以选择其中一个选项。
  5. 基于所采取的动作之一,工作流继续进行。

到目前为止,为了实现这一点,我在完成之前引入了用户任务new和归档,并添加了两个名为归档和完成的表单变量作为布尔值。

根据他选择填充的表单变量,我进一步进行。

但在这种情况下,我不能根据用户是否具有存档和完成权限来限制用户,所有用户都将显示这两个选项。

有没有其他方法可以实现这一点,我对Activiti、工作流和bpmn一般都很陌生。任何帮助都将不胜感激,提前感谢


共1个答案

匿名用户

直接将过渡设置为任务并根据以下模式设置过渡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>