/**
   * 流程转向操作
   *
   * @param taskId 当前任务ID
   * @param activityId 目标节点任务ID
   * @param variables 流程变量
   * @throws Exception
   */
  private void turnTransition(String taskId, String activityId, Map<String, Object> variables)
      throws Exception {
    // 当前节点
    ActivityImpl currActivity = this.findActivitiImpl(taskId, null);
    // 清空当前流向
    List<PvmTransition> oriPvmTransitionList = this.clearTransition(currActivity);

    // 创建新流向
    TransitionImpl newTransition = currActivity.createOutgoingTransition();
    // 目标节点
    ActivityImpl pointActivity = this.findActivitiImpl(taskId, activityId);
    // 设置新流向的目标节点
    newTransition.setDestination(pointActivity);

    // 执行转向任务
    taskService.complete(taskId, variables);
    // 删除目标节点新流入
    pointActivity.getIncomingTransitions().remove(newTransition);

    // 还原以前流向
    this.restoreTransition(currActivity, oriPvmTransitionList);
  }