vue3使用策略模式,符合条件在执行,思路

// 定义参数处理器接口
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
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值