// 定义参数处理器接口
interface ParameterHandler {
canHandle: (data: any, type: string) => boolean
handle: (data: any, nodeParameters: any) => void
}
// WAIT数处理器
const waitTaskHandler: ParameterHandler = {
canHandle: (data, type) => {
return type === 'WAIT'
},
handle: (data, nodeParameters) => {
nodeParameters.expireTimeMillis = data.waitTask.expireTimeMillis
nodeParameters.duration = data.waitTask.duration
},
}
// WAIT_FOR_WEBHOOK 参数处理器
const waitForWebhookHandler: ParameterHandler = {
canHandle: (data, type) => {
return type === 'WAIT_FOR_WEBHOOK'
},
handle: (data, nodeParameters) => {
if (data.params.length === 0) return
data.params.forEach((item) => {
nodeParameters.matches[item.name] = item.value
})
},
}
// 参数处理器集合
const parameterHandlers: ParameterHandler[] = [waitTaskHandler, commonParamsHandler, waitForWebhookHandler]
const formatNodeData = (cell: Cell) => {
const { tempData } = cell.data
const { formData, nodeName, originData } = tempData || {}
const { desc, switchDecisionCase, switchDefaultCase } = formData || {}
const { id, type } = originData || {}
const bizData: any = {
desc,
taskId: id,
switchDecisionCase,
switchDefaultCase,
nodeParameters: {},
}
if (nodeName) {
bizData.nodeName = nodeName
}
const nodeParameters = {
matches: {},
} as any
// 使用处理器处理参数
parameterHandlers.forEach((handler) => {
if (handler.canHandle(formData, type)) {
handler.handle(formData, nodeParameters)
}
})
bizData.nodeParameters = nodeParameters
return bizData
}
12-03
04-26
2240

07-07
1473

04-02
273
