/**
  * 设置任务被错过执行的标记.
  *
  * @param items 需要设置错过执行的任务分片项
  */
 public void setMisfire(final List<Integer> items) {
   if (!configService.isMonitorExecution()) {
     return;
   }
   for (int each : items) {
     jobNodeStorage.createJobNodeIfNeeded(ExecutionNode.getMisfireNode(each));
   }
 }
 /**
  * 获取标记被错过执行的任务分片项.
  *
  * @param items 需要获取标记被错过执行的任务分片项
  * @return 标记被错过执行的任务分片项
  */
 public List<Integer> getMisfiredJobItems(final List<Integer> items) {
   List<Integer> result = new ArrayList<>(items.size());
   for (int each : items) {
     if (jobNodeStorage.isJobNodeExisted(ExecutionNode.getMisfireNode(each))) {
       result.add(each);
     }
   }
   return result;
 }
 @Test
 public void assertGetMisfireNode() {
   assertThat(ExecutionNode.getMisfireNode(0), is("execution/0/misfire"));
 }
 /**
  * 清除任务被错过执行的标记.
  *
  * @param items 需要清除错过执行的任务分片项
  */
 public void clearMisfire(final List<Integer> items) {
   for (int each : items) {
     jobNodeStorage.removeJobNodeIfExisted(ExecutionNode.getMisfireNode(each));
   }
 }