工作中遇到的问题:递归寻找节点

 

const nodesAA = [{
    "type": "start",
    "meta": {
        "label": "流程启动",
        "name": "start",
        "allowDraft": false,
        "summaryFields": [],
        "hiddenFields": [],
        "readonlyFields": []
    }
},
{
    "type": "userTask",
    "meta": {
        "label": "审批1",
        "name": "v1_x3jTC",
        "title": "请审批示例申请",
        "summaryFields": [],
        "hiddenFields": [],
        "writableFields": [],
        "readonlyFields": null,
        "participants": [],
        "approvalType": "Single",
        "actions": [{
            "name": "approve",
            "label": "同意",
            "enable": true,
            "enableComment": true,
            "requireComment": false
        },
        {
            "name": "reject",
            "label": "拒绝",
            "enable": true,
            "enableComment": true,
            "requireComment": false
        },
        {
            "name": "transfer",
            "label": "Transfer",
            "enable": false,
            "enableComment": null,
            "requireComment": null
        }],
        "form": {
            "viewName": ""
        },
        "notify": false,
        "notifyByWechat": false,
        "delayAction": null,
        "allowBatch": false,
        "rejectToReturn": true,
        "returnableNodes": [{
            "name": "start",
            "label": "流程启动"
        }],
        "isFillingTask": false
    }
},
{
    "type": "excludeGateway",
    "meta": {
        "label": "条件分支",
        "name": "v1_bAfRh",
        "branches": [{
            "label": "条件分支",
            "condition": {
                "conjunction": "OR",
                "conditions": [{
                    "conjunction": "or",
                    "conditions": [{
                        "conjunction": "and",
                        "conditions": null,
                        "condition": {
                            "field": "gjs__text__CST",
                            "operator": "contains",
                            "value": "aaa",
                            "fieldType": "Text",
                            "operatorDisplayName": "包含"
                        },
                        "fieldFormat": "{!form.%s}"
                    }],
                    "condition": null,
                    "fieldFormat": "{!form.%s}"
                }],
                "condition": null,
                "fieldFormat": "{!form.%s}"
            },
            "nodes": [{
                "type": "userTask",
                "meta": {
                    "label": "条件1审批1-1",
                    "name": "v1_bBmMG",
                    "title": "请审批示例申请",
                    "summaryFields": [],
                    "hiddenFields": [],
                    "writableFields": [],
                    "readonlyFields": null,
                    "participants": [],
                    "approvalType": "Single",
                    "actions": [{
                        "name": "approve",
                        "label": "同意",
                        "enable": true,
                        "enableComment": true,
                        "requireComment": false,
                        "isEditFlag": false
                    },
                    {
                        "name": "reject",
                        "label": "拒绝",
                        "enable": true,
                        "enableComment": true,
                        "requireComment": false,
                        "isEditFlag": false
                    },
                    {
                        "name": "transfer",
                        "label": "Transfer",
                        "enable": false,
                        "enableComment": null,
                        "requireComment": null,
                        "isEditFlag": false
                    }],
                    "form": {
                        "viewName": ""
                    },
                    "notify": false,
                    "notifyByWechat": false,
                    "delayAction": null,
                    "allowBatch": false,
                    "rejectToReturn": false,
                    "returnableNodes": [],
                    "isFillingTask": false
                }
            },
            {
                "type": "excludeGateway",
                "meta": {
                    "name": "v1_y6RXh",
                    "label": "条件分支",
                    "branches": [{
                        "label": "条件分支",
                        "type": "excludeBranch",
                        "condition": {
                            "conjunction": "OR",
                            "conditions": [{
                                "conjunction": "or",
                                "conditions": [{
                                    "conjunction": "and",
                                    "condition": {
                                        "field": "gjs__text__CST",
                                        "operator": "contains",
                                        "value": "AAA",
                                        "fieldType": "Text",
                                        "operatorDisplayName": "包含"
                                    }
                                }]
                            }]
                        },
                        "nodes": [{
                            "type": "userTask",
                            "meta": {
                                "name": "v1_y6Mmh",
                                "label": "审批",
                                "approvalType": "Single",
                                "title": "请审批示例申请",
                                "participants": [],
                                "actions": [{
                                    "name": "approve",
                                    "label": "同意",
                                    "enable": true,
                                    "isEditFlag": false,
                                    "enableComment": true,
                                    "requireComment": false
                                },
                                {
                                    "name": "reject",
                                    "label": "拒绝",
                                    "enable": true,
                                    "isEditFlag": false,
                                    "enableComment": true,
                                    "requireComment": false
                                },
                                {
                                    "name": "transfer",
                                    "label": "Transfer",
                                    "enable": false,
                                    "isEditFlag": false
                                }],
                                "form": {},
                                "notify": false,
                                "summaryFields": [],
                                "hiddenFields": [],
                                "writableFields": [],
                                "delayAction": null,
                                "rejectToReturn": false,
                                "returnableNodes": []
                            }
                        },
                        {
                            "type": "userTask",
                            "meta": {
                                "name": "v1_rnDPY",
                                "label": "审批",
                                "approvalType": "Single",
                                "title": "请审批示例申请",
                                "participants": [],
                                "actions": [{
                                    "name": "approve",
                                    "label": "同意",
                                    "enable": true,
                                    "isEditFlag": false,
                                    "enableComment": true,
                                    "requireComment": false
                                },
                                {
                                    "name": "reject",
                                    "label": "拒绝",
                                    "enable": true,
                                    "isEditFlag": false,
                                    "enableComment": true,
                                    "requireComment": false
                                },
                                {
                                    "name": "transfer",
                                    "label": "Transfer",
                                    "enable": false,
                                    "isEditFlag": false
                                }],
                                "form": {},
                                "notify": false,
                                "summaryFields": [],
                                "hiddenFields": [],
                                "writableFields": [],
                                "delayAction": null,
                                "rejectToReturn": true,
                                "returnableNodes": [{
                                    "label": "审批",
                                    "name": "v1_y6Mmh"
                                }]
                            }
                        }]
                    },
                    {
                        "label": "条件分支",
                        "type": "excludeBranch",
                        "condition": {
                            "conjunction": "OR",
                            "conditions": [{
                                "conjunction": "or",
                                "conditions": [{
                                    "conjunction": "and",
                                    "condition": {
                                        "field": "gjs__text__CST",
                                        "operator": "contains",
                                        "value": "BBB",
                                        "fieldType": "Text",
                                        "operatorDisplayName": "包含"
                                    }
                                }]
                            }]
                        },
                        "nodes": [{
                            "type": "userTask",
                            "meta": {
                                "name": "v1_phe4t",
                                "label": "审批",
                                "approvalType": "Single",
                                "title": "请审批示例申请",
                                "participants": [],
                                "actions": [{
                                    "name": "approve",
                                    "label": "同意",
                                    "enable": true
                                },
                                {
                                    "name": "reject",
                                    "label": "拒绝",
                                    "enable": true
                                },
                                {
                                    "name": "transfer",
                                    "label": "Transfer",
                                    "enable": false
                                }],
                                "form": {}
                            }
                        },
                        {
                            "type": "userTask",
                            "meta": {
                                "name": "v1_dEJFG",
                                "label": "审批",
                                "approvalType": "Single",
                                "title": "请审批示例申请",
                                "participants": [],
                                "actions": [{
                                    "name": "approve",
                                    "label": "同意",
                                    "enable": true
                                },
                                {
                                    "name": "reject",
                                    "label": "拒绝",
                                    "enable": true
                                },
                                {
                                    "name": "transfer",
                                    "label": "Transfer",
                                    "enable": false
                                }],
                                "form": {}
                            }
                        }]
                    }]
                }
            },
            {
                "type": "userTask",
                "meta": {
                    "label": "条件1审批1-2",
                    "name": "v1_w2d7k",
                    "title": "请审批示例申请",
                    "summaryFields": [],
                    "hiddenFields": [],
                    "writableFields": [],
                    "readonlyFields": null,
                    "participants": [],
                    "approvalType": "Single",
                    "actions": [{
                        "name": "approve",
                        "label": "同意",
                        "enable": true,
                        "enableComment": true,
                        "requireComment": false,
                        "isEditFlag": false
                    },
                    {
                        "name": "reject",
                        "label": "拒绝",
                        "enable": true,
                        "enableComment": true,
                        "requireComment": false,
                        "isEditFlag": false
                    },
                    {
                        "name": "transfer",
                        "label": "Transfer",
                        "enable": false,
                        "enableComment": null,
                        "requireComment": null,
                        "isEditFlag": false
                    }],
                    "form": {
                        "viewName": ""
                    },
                    "notify": false,
                    "notifyByWechat": false,
                    "delayAction": null,
                    "allowBatch": false,
                    "rejectToReturn": true,
                    "returnableNodes": [{
                        "label": "条件1审批1-1",
                        "name": "v1_bBmMG"
                    }],
                    "isFillingTask": false
                }
            }],
            "type": "excludeBranch"
        },
        {
            "label": "条件分支",
            "condition": {
                "conjunction": "OR",
                "conditions": [{
                    "conjunction": "or",
                    "conditions": [{
                        "conjunction": "and",
                        "conditions": null,
                        "condition": {
                            "field": "gjs__text__CST",
                            "operator": "contains",
                            "value": "bbb",
                            "fieldType": "Text",
                            "operatorDisplayName": "包含"
                        },
                        "fieldFormat": "{!form.%s}"
                    }],
                    "condition": null,
                    "fieldFormat": "{!form.%s}"
                }],
                "condition": null,
                "fieldFormat": "{!form.%s}"
            },
            "nodes": [{
                "type": "userTask",
                "meta": {
                    "label": "条件1审批2-1",
                    "name": "v1_rmxQc",
                    "title": "请审批示例申请",
                    "summaryFields": [],
                    "hiddenFields": [],
                    "writableFields": [],
                    "readonlyFields": null,
                    "participants": [],
                    "approvalType": "Single",
                    "actions": [{
                        "name": "approve",
                        "label": "同意",
                        "enable": true,
                        "enableComment": true,
                        "requireComment": false
                    },
                    {
                        "name": "reject",
                        "label": "拒绝",
                        "enable": true,
                        "enableComment": true,
                        "requireComment": false
                    },
                    {
                        "name": "transfer",
                        "label": "Transfer",
                        "enable": false,
                        "enableComment": null,
                        "requireComment": null
                    }],
                    "form": {
                        "viewName": ""
                    },
                    "notify": false,
                    "notifyByWechat": false,
                    "delayAction": null,
                    "allowBatch": false,
                    "rejectToReturn": false,
                    "returnableNodes": [],
                    "isFillingTask": false
                }
            },
            {
                "type": "userTask",
                "meta": {
                    "label": "条件1审批2-2",
                    "name": "v1_spYhW",
                    "title": "请审批示例申请",
                    "summaryFields": [],
                    "hiddenFields": [],
                    "writableFields": [],
                    "readonlyFields": null,
                    "participants": [],
                    "approvalType": "Single",
                    "actions": [{
                        "name": "approve",
                        "label": "同意",
                        "enable": true,
                        "enableComment": true,
                        "requireComment": false
                    },
                    {
                        "name": "reject",
                        "label": "拒绝",
                        "enable": true,
                        "enableComment": true,
                        "requireComment": false
                    },
                    {
                        "name": "transfer",
                        "label": "Transfer",
                        "enable": false,
                        "enableComment": null,
                        "requireComment": null
                    }],
                    "form": {
                        "viewName": ""
                    },
                    "notify": false,
                    "notifyByWechat": false,
                    "delayAction": null,
                    "allowBatch": false,
                    "rejectToReturn": false,
                    "returnableNodes": [{
                        "name": "v1_rmxQc",
                        "label": "条件1审批2-1"
                    }],
                    "isFillingTask": false
                }
            }],
            "type": "excludeBranch"
        }],
        "isExclude": true
    }
},
{
    "type": "userTask",
    "meta": {
        "label": "审批2",
        "name": "v1_rk7N8",
        "title": "请审批示例申请",
        "summaryFields": [],
        "hiddenFields": [],
        "writableFields": [],
        "readonlyFields": null,
        "participants": [],
        "approvalType": "Single",
        "actions": [{
            "name": "approve",
            "label": "同意",
            "enable": true,
            "enableComment": true,
            "requireComment": false
        },
        {
            "name": "reject",
            "label": "拒绝",
            "enable": true,
            "enableComment": true,
            "requireComment": false
        },
        {
            "name": "transfer",
            "label": "Transfer",
            "enable": false,
            "enableComment": null,
            "requireComment": null
        }],
        "form": {
            "viewName": ""
        },
        "notify": false,
        "notifyByWechat": false,
        "delayAction": null,
        "allowBatch": false,
        "rejectToReturn": false,
        "returnableNodes": [{
            "name": "start",
            "label": "流程启动"
        },
        {
            "name": "v1_x3jTC",
            "label": "审批1"
        }],
        "isFillingTask": false
    }
},
{
    "type": "userTask",
    "meta": {
        "label": "审批3",
        "name": "v1_nd4za",
        "title": "请审批示例申请",
        "summaryFields": [],
        "hiddenFields": [],
        "writableFields": [],
        "readonlyFields": null,
        "participants": [],
        "approvalType": "Single",
        "actions": [{
            "name": "approve",
            "label": "同意",
            "enable": true,
            "enableComment": true,
            "requireComment": false
        },
        {
            "name": "reject",
            "label": "拒绝",
            "enable": true,
            "enableComment": true,
            "requireComment": false
        },
        {
            "name": "transfer",
            "label": "Transfer",
            "enable": false,
            "enableComment": null,
            "requireComment": null
        }],
        "form": {
            "viewName": ""
        },
        "notify": false,
        "notifyByWechat": false,
        "delayAction": null,
        "allowBatch": false,
        "rejectToReturn": false,
        "returnableNodes": [{
            "name": "start",
            "label": "流程启动"
        },
        {
            "name": "v1_x3jTC",
            "label": "审批1"
        },
        {
            "name": "v1_rk7N8",
            "label": "审批2"
        }],
        "isFillingTask": false
    }
},
{
    "type": "excludeGateway",
    "meta": {
        "label": "条件分支",
        "name": "v1_maXst",
        "branches": [{
            "label": "条件分支",
            "condition": {
                "conjunction": "OR",
                "conditions": [{
                    "conjunction": "or",
                    "conditions": [{
                        "conjunction": "and",
                        "conditions": null,
                        "condition": {
                            "field": "gjs__text__CST",
                            "operator": "contains",
                            "value": "aaa",
                            "fieldType": "Text",
                            "operatorDisplayName": "包含"
                        },
                        "fieldFormat": "{!form.%s}"
                    }],
                    "condition": null,
                    "fieldFormat": "{!form.%s}"
                }],
                "condition": null,
                "fieldFormat": "{!form.%s}"
            },
            "nodes": [{
                "type": "userTask",
                "meta": {
                    "label": "条件2审批1-1",
                    "name": "v1_maypC",
                    "title": "请审批示例申请",
                    "summaryFields": [],
                    "hiddenFields": [],
                    "writableFields": [],
                    "readonlyFields": null,
                    "participants": [],
                    "approvalType": "Single",
                    "actions": [{
                        "name": "approve",
                        "label": "同意",
                        "enable": true,
                        "enableComment": true,
                        "requireComment": false
                    },
                    {
                        "name": "reject",
                        "label": "拒绝",
                        "enable": true,
                        "enableComment": true,
                        "requireComment": false
                    },
                    {
                        "name": "transfer",
                        "label": "Transfer",
                        "enable": false,
                        "enableComment": null,
                        "requireComment": null
                    }],
                    "form": {
                        "viewName": ""
                    },
                    "notify": false,
                    "notifyByWechat": false,
                    "delayAction": null,
                    "allowBatch": false,
                    "rejectToReturn": false,
                    "returnableNodes": [],
                    "isFillingTask": false
                }
            },
            {
                "type": "userTask",
                "meta": {
                    "label": "条件2审批1-2",
                    "name": "v1_rkKJE",
                    "title": "请审批示例申请",
                    "summaryFields": [],
                    "hiddenFields": [],
                    "writableFields": [],
                    "readonlyFields": null,
                    "participants": [],
                    "approvalType": "Single",
                    "actions": [{
                        "name": "approve",
                        "label": "同意",
                        "enable": true,
                        "enableComment": true,
                        "requireComment": false
                    },
                    {
                        "name": "reject",
                        "label": "拒绝",
                        "enable": true,
                        "enableComment": true,
                        "requireComment": false
                    },
                    {
                        "name": "transfer",
                        "label": "Transfer",
                        "enable": false,
                        "enableComment": null,
                        "requireComment": null
                    }],
                    "form": {
                        "viewName": ""
                    },
                    "notify": false,
                    "notifyByWechat": false,
                    "delayAction": null,
                    "allowBatch": false,
                    "rejectToReturn": false,
                    "returnableNodes": [{
                        "name": "v1_maypC",
                        "label": "条件2审批1-1"
                    }],
                    "isFillingTask": false
                }
            }],
            "type": "excludeBranch"
        },
        {
            "label": "条件分支",
            "condition": {
                "conjunction": "OR",
                "conditions": [{
                    "conjunction": "or",
                    "conditions": [{
                        "conjunction": "and",
                        "conditions": null,
                        "condition": {
                            "field": "gjs__text__CST",
                            "operator": "contains",
                            "value": "bbb",
                            "fieldType": "Text",
                            "operatorDisplayName": "包含"
                        },
                        "fieldFormat": "{!form.%s}"
                    }],
                    "condition": null,
                    "fieldFormat": "{!form.%s}"
                }],
                "condition": null,
                "fieldFormat": "{!form.%s}"
            },
            "nodes": [],
            "type": "excludeBranch"
        }],
        "isExclude": true
    }
}]

// v1_x3jTC  v1_bBmMG v1_y6Mmh  v1_rnDPY  v1_w2d7k v1_rk7N8 v1_nd4za  v1_rkKJE


function returnNodeList(nodes, name, parentName){
  for(let i = 0; i < nodes.length; i++){
	if(nodes[i].meta.name === name){
	  return {
		nodes: nodes,
		name: parentName
	  }
	}
	if(nodes[i].type === 'gateway' || nodes[i].type === 'excludeGateway'){
	  for(let j = 0; j < nodes[i].meta.branches.length; j++) {
		const nodesList = returnNodeList(nodes[i].meta.branches[j].nodes, name, nodes[i].meta.name)
		console.log('nodesList',nodesList)
		if(nodesList){
		   return {
			 nodes: nodesList.nodes,
			 name: nodesList.name
		  };
		}
	  }
	}
  }
}

function recursionNodesList(list, name) {
  const currentNodeList = returnNodeList(nodesAA ,name)
  if(currentNodeList?.name){
	mapNodes(list, currentNodeList, name)
	recursionNodesList(list, currentNodeList?.name)
  }else{
	mapNodes(list, currentNodeList, name)
  }
}

function mapNodes(list, currentNodeList, name){
	let nodesList = [];
	let nodes = currentNodeList.nodes;
	for(let i = 0; i < nodes.length; i++) {
	  if(nodes[i].meta.name === name) {
		break;
	  }
	  if(nodes[i].type !== 'gateway' && nodes[i].type !== 'excludeGateway' 
		  && nodes[i].type !== 'notify') {
		if(nodes[i].type === 'start') {
		  let startNode = {
			label: 'startNode',
			name : nodes[i].meta.name
		  }
		  nodesList.push(startNode);
		} else {
		  nodesList.push(nodes[i].meta);
		}
	  }
	}
	list.unshift(...nodesList);
}

// v1_x3jTC  v1_bBmMG v1_y6Mmh  v1_rnDPY  v1_w2d7k v1_rk7N8 v1_nd4za  v1_rkKJE
const returnableNodesList = [];
recursionNodesList(returnableNodesList, 'v1_rnDPY')
console.log(returnableNodesList)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值