DCOM 系统自动触发流程

该博客详细描述了一个DCOM系统的自动化工作流程,包括巡检触发、派发工具领用和管理流程三个主要阶段。在巡检触发流程中,通过startEvent、groovy脚本和gateWay判定条件实现工单的自动化处理。派发触发工具领用流程则涉及工单信息、工具领用和流程判定。最后,在管理流程中,使用groovy脚本进行数据处理并更新每日报告。整个流程涉及到工单管理、系统交互和流程控制等多个方面。
摘要由CSDN通过智能技术生成

1.巡检触发流程

1.1 startEvent

/**
 * 工单号
 */
baseNo

/**
 * 工单名称
 */
baseName

/**
 * 事件描述
 */
eventDesc

/**
 * 事件发生的时间
 */
eventOccurTime

/**
 * 事件发生地点
 */
 location

/**
 * 事件上报人
 */
eventReportPerson

/**
 * 设备名称
 */
device

/**
 * Dcim告警点位
 */
devicePoint

/**
 * 告警级别
 */
level

/**
 * 记录保存巡检记录表中的ID,用于流程更新流程实例ID
 */
patrolErrorIds

/**
 * 定义启动方法为:巡检:patrol  dcim:dcim
 */
startMethod

1.2 scriptTask(groovy)

import groovyx.net.http.ContentType
import groovyx.net.http.HTTPBuilder
import groovyx.net.http.Method
import groovy.json.*

def jsonSlurper = new JsonSlurper()

// 获取巡检提交者
def reportPerson = execution.getVariable("eventReportPerson")
def reportPerson_array = []
def reportPerson_json = jsonSlurper.parseText(reportPerson)
reportPerson_array = reportPerson_json.value
// 替换流程发起人
execution.setVariable("initiator", reportPerson_array[0])

// 获取流程实例ID
def processInstanceId = execution.getVariable("processInstanceId")

// 获取巡检记录ID
def patrolErrorIds = execution.getVariable("patrolErrorIds")
def patrolErrorIds_array = patrolErrorIds.split(",")


// 更新流程实例ID
patrolErrorIds_array.each { s ->
    //所有参数
    def params = [
            "processInstanceId": processInstanceId,
            "id"               : s,
    ]
    //访问的URL
    def path = 'http://dcom-http:8080/bj/process/patrolError/updateProcess'

    def http = new HTTPBuilder(path)
    http.request(Method.POST) {
        requestContentType = ContentType.JSON
        body = params
        response.failure = { resp ->
            org.slf4j.LoggerFactory.getLogger("--->from groovy ").warn("Request failed with status ${resp.status}")
        }
    }
}

1.3 gateWay 判定条件

// 条件一:手动发起
${startMethod=='manual'}

// 条件二:巡检发起
${startMethod=='patrol'}

// 条件三:DCIM发起
${startMethod=='dcim'}

2.派发触发工具领用

2.1 startEvent

/**
 * 工单号
 */
baseNo
/**
 * 发起人。systemAuto表示系统发起
 */
initiator = "systemAuto"
/**
 * 工单名称
 */
baseName
/**
 * 发起部门
 */
startDepartment
/**
 * 开始时间
 */
startDateTime
/**
 * 结束时间
 */
endDateTime
/**
 * 领用信息
 */
applyInfo
/**
 * 派发人
 */
distributor
/**
 * 存储toolID方便后续归还
 */
toolsID

2.2 scriptTask(groovy)

// 将派发人替换成流程发起人
def distributor = execution.getVariable("distributor");
execution.setVariable("initiator", distributor);

2.3 gateWay 判定条件

// 条件一:系统发起
${initiator=='systemAuto'}

// 条件二:手动发起
${initiator!='systemAuto'}

3.管理流程

3.1 scriptTask(groovy)

import groovyx.net.http.ContentType
import groovyx.net.http.HTTPBuilder
import groovyx.net.http.Method
import groovy.json.*

def jsonSlurper = new JsonSlurper()

// 附件
def file_json = execution.getVariable('file')
def file = jsonSlurper.parseText(file_json)

// 项目名称
def projectName_json = execution.getVariable('projectName')
def projectName = jsonSlurper.parseText(projectName_json)
def projectName_ID = projectName.value[0]



// 参数
def params = [
        // 工单名称
        reportId          : execution.getVariable('baseName'),
        // 项目名称
        dataCenter        : projectName_ID,
        // 报告人
        reportPerson      : execution.getVariable('person'),
        // 报告时间
        submitTime        : System.currentTimeMillis(),
        // 昨日工作总结
        yesterdaySummary  : execution.getVariable('yesterdaySummary'),
        // 今日工作安排
        todayPlan         : execution.getVariable('todayPlan'),
        // 风险与问题数量
        riskAndQuestionNum: execution.getVariable('riskAndQuestionNum'),
        // 存在的风险或问题
        riskAndQuestion   : execution.getVariable('riskAndQuestion'),
        // 其他
        others            : execution.getVariable('others'),
        fileId            : file.url.join(','),
        fileName          : file.name.join(',')

]

org.slf4j.LoggerFactory.getLogger("--->from groovy updateDailyReport:").info("params:$params");


// URL
def path = 'http://dcom-http:8080/bj/dailyReport/add'

def http = new HTTPBuilder(path)
http.request(Method.POST) {
    requestContentType = ContentType.JSON
    body = params
    response.failure = { resp ->
        // 打印错误日志
        org.slf4j.LoggerFactory.getLogger("--->from groovy ").warn("Update Daily Report file Request failed with status ${resp.status}")
    }
}

// 清除流程变量,避免多实例处理内容反显问题
execution.removeVariable('file')
execution.removeVariable('projectName')
execution.removeVariable('person')
execution.removeVariable('yesterdaySummary')
execution.removeVariable('todayPlan')
execution.removeVariable('riskAndQuestionNum')
execution.removeVariable('riskAndQuestion')
execution.removeVariable('others')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值