package com.hotent.runtime.job; import javax.annotation.Resource; import org.springframework.stereotype.Component; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.node.ObjectNode; import com.hotent.base.constants.SystemConstants; import com.hotent.base.exception.BaseException; import com.hotent.base.util.BeanUtils; import com.hotent.base.util.JsonUtil; import com.hotent.base.util.StringUtil; import com.hotent.runtime.controller.BpmAutoStartConfController; import com.hotent.uc.api.impl.util.ContextUtil; import com.xxl.job.core.biz.model.ReturnT; import com.xxl.job.core.handler.annotation.XxlJob; import com.xxl.job.core.log.XxlJobLogger; /** * 定时启动流程 * * @company 广州宏天软件股份有限公司 * @author jason * @email liygui@jee-soft.cn * @date 2020年5月28日 */ @Component public class FlowAutoStartXxlJob { @Resource BpmAutoStartConfController bpmAutoStartConfController; /** * 1、简单任务示例(Bean模式) */ @XxlJob("flowAutoStartXxlJob") public ReturnT flowAutoStartXxlJob(String param) throws Exception { XxlJobLogger.log("XXL-JOB, 开始执行流程自动发起任务."); String defaultAccount = SystemConstants.SYSTEM_ACCOUNT; JsonNode jsonNode = JsonUtil.toJsonNode(param); String startAccount = jsonNode.get("startAccount").asText(); if (StringUtil.isNotEmpty(startAccount)) { defaultAccount = startAccount; } // 定时任务中没有当前登录用户,所以需要设置到当前用户上下文中 ContextUtil.setCurrentUserByAccount(defaultAccount); // 调用接口启动流程 ObjectNode startFlowResult = bpmAutoStartConfController.defAutoStart(); if (BeanUtils.isNotEmpty(startFlowResult) && !startFlowResult.get("state").asBoolean()) { String message = "流程启动失败"; if (BeanUtils.isNotEmpty(startFlowResult) && BeanUtils.isNotEmpty(startFlowResult.get("message"))) { message += ":" + startFlowResult.get("message").asText(); } throw new BaseException(message); } return ReturnT.SUCCESS; } }