// 获取实例的审批历史
 @DataProvider
 public Collection<HistoryTask> loadHistoryTask(String taskId) {
   Task task = taskClient.getTask(Long.valueOf(taskId));
   HistoryTaskQuery query = historyService.createHistoryTaskQuery();
   query.addOrderDesc("endDate");
   query.rootProcessInstanceId(task.getRootProcessInstanceId());
   return query.list();
 }
  // 完成任务
  @Expose
  public void completeTask(String taskId, String opinion) {
    long id = Long.valueOf(taskId);

    try {
      if (StringUtils.isNotEmpty(opinion)) {
        // 审批意见
        TaskOpinion taskOpinion = new TaskOpinion(opinion);
        // 开始任务
        taskClient.start(Long.valueOf(taskId));
        taskClient.complete(Long.valueOf(taskId), taskOpinion);

      } else {
        // 开始任务
        taskClient.start(Long.valueOf(taskId));
        taskClient.complete(Long.valueOf(taskId));
      }
    } catch (Exception e) {
      taskClient.rollback(id, "分公司计划员");
    }
  }
 // 撤回上一节点
 @Expose
 public String withdrawTask(String taskId, String opinion) {
   long taskId_ = Long.valueOf(taskId);
   try {
     if (StringUtils.isNotEmpty(opinion)) {
       // 审批意见
       TaskOpinion taskOpinion = new TaskOpinion(opinion);
       if (taskService.canWithdraw(taskId_)) {
         taskService.withdraw(taskId_, taskOpinion);
         return null;
       }
     } else {
       if (taskService.canWithdraw(taskId_)) {
         taskService.withdraw(taskId_);
         return null;
       }
     }
   } catch (Exception e) {
     taskClient.rollback(taskId_, "分公司计划员");
   }
   return "当前任务不可撤回";
 }