LiteFlow使用

LiteFlow.xml




    
    
    
    
    
    
    
    
    
    

LiteComponent接口
package com.metro.modules.plan.liteflow.common;

/**

  • 组件id和名称
    */

     public interface LiteComponent {
    
     interface PlanLite {
     // 执行器名称
     
     String PLAN_EXEC_FLOW_CONFIRM_AFTER="planExecFlowConfirmAfter";
     	
    
     String SELECT_PLAN = "selectPlan";
     String SELECT_PLAN_NAME = "设置预案参数";
    
     String PLAN_RULE = "planRule";
     String PLAN_RULE_NAME = "判断预案规则";
    
     String PLAN_BEFORE = "planBeforeStop";
     String PLAN_BEFORE_NAME = "检查此预案之前是否有其他预案正在执行";
    
     String PLAN_TASK_DEVICE = "planTaskDevice";
     String PLAN_TASK_DEVICE_NAME = "预案设备任务";
    
     String PLAN_TASK_PEOPLE = "planTaskPeople";
     String PLAN_TASK_PEOPLE_NAME = "预案人员任务";
    
     String INSERT_NEW_PLAN_RESERVE_DETAIL = "insertNewPlanReserveDetail";
     String INSERT_NEW_PLAN_RESERVE_DETAIL_NAME = "插入预案手动执行记录";
    
     String INSERT_CONDITION_NEW_PLAN_RESERVE_DETAIL = "insertConditionNewPlanReserveDetail";
     String INSERT_CONDITION_NEW_PLAN_RESERVE_DETAIL_NAME = "插入条件预案执行记录";
    
     String INSERT_TIME_NEW_PLAN_RESERVE_DETAIL = "insertTimePlanReserveDetail";
     String INSERT_TIME_NEW_PLAN_RESERVE_DETAIL_NAME = "插入定时预案执行记录";
    
     String UPDATE_PLAN_RESERVE_DETAIL = "updatePlanReserveDetail";
     String UPDATE_PLAN_RESERVE_DETAIL_NAME = "修改预案状态为待执行";
    
     String WEBSOCKET_TASK_DETAIL = "websocketTaskDetail";
     String WEBSOCKET_TASK_DETAIL_NAME = "websocket推送任务信息";
     }
    

    接口实现

     @GetMapping("/planExecute")
     @ApiOperationSupport(order = 14)
     @ApiOperation(value = "管理端预案确认执行", notes = "管理端预案确认执行")
     public R planExecute(
     	@ApiParam(name = "id", value = "预案ID", required = true) @RequestParam(value = "id") Long id,
     	@ApiParam(name = "dialogTime", value = "web弹窗时间", required = true) 	@RequestParam(value = "dialogTime") Date dialogTime) {
     		
     ExecParams execParams = new ExecParams();
    
     execParams.setId(id);
     execParams.setDialogTime(dialogTime);
     execParams.setUserId(null);
    
     LiteflowResponse response = flowExecutor.execute2Resp(LiteComponent.PlanLite.PLAN_EXEC_FLOW_CONFIRM_AFTER,execParams, ExecSlot.class);
     ExecSlot slot = response.getSlot();
    
     log.info("管理端预案确认执行结束: {}", slot.toString());
     if (!slot.isFlag()) {
     	R.fail(500, slot.getMessage());
     }
     return R.success(slot.getMessage());
     }
    

每个类的实现

@Slf4j
@LiteflowComponent(id = LiteComponent.PlanLite.PLAN_BEFORE, name = LiteComponent.PlanLite.PLAN_BEFORE_NAME)
@AllArgsConstructor
public class PlanBeforeStopComponent extends NodeComponent {

private final IPlanReserveDetailService planReserveDetailService;
private final ITaskManageService iTaskManageService;
private final IPlanReserveDetailDeviceService iPlanReserveDetailDeviceService;

@Override
public boolean isAccess() {
    ExecSlot slot = this.getSlot();
    PlanManage planManage = slot.getPlanManage();
    if (PlanConst.Num.num1 == planManage.getPlanCategory()) {
        return true;
    }
    log.info("[执行预案LITE]执行的预案类型!=1,不进行暂停");
    return false;
}

@Override
public void process() {
    log.info("[执行预案LITE]检查此预案之前是否有其他预案正在执行");

    ExecSlot slot = this.getSlot();

	//查询数据
	List  planManageTaskList=planManageTaskervice.list()
	solt.setpPanManageTaskList(planManageTaskList);
  }

ExecSlot data数据

@Data
public class ExecSlot extends AbsSlot {
// 是否执行成功
private boolean flag = true;
// 执行信息反馈
private String message = "执行成功";
// 预案信息
private PlanManage planManage;
// 预案规则信息
private List planManageRuleList;
// 预案任务
private List planManageTaskList;
// 预案任务设施
private Map> planManageTaskFacilityMap;
// 之前预案的设施
private List previousTaskFacilityList;
// 生成的任务数据
private List taskManageList;

// 预案执行记录
private PlanReserveDetail planReserveDetail;

public void setFlagAndMessage(boolean flag, String message) {
	this.flag = flag;
	this.message = message;
}

}

你可能感兴趣的:(websocket,java,网络协议)