@blueking/bkflow-canvas-editor 1.2.0-beta.0 → 1.2.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/advanced.cjs.js +1 -1
- package/dist/advanced.d.ts +196 -5
- package/dist/advanced.esm.js +1 -1
- package/dist/{context-B9wWQx6k.cjs → context-Bj442dps.cjs} +1 -1
- package/dist/{context-CVSZiSc9.js → context-CdSU0w5S.js} +49 -21
- package/dist/{index-Ac8oJo2D.js → index-BDAWGVae.js} +50 -48
- package/dist/{index-D_PNC9EL.cjs → index-BPyjvoGz.cjs} +1 -1
- package/dist/{index-Ddt7hVPG.js → index-CJ5t_LGa.js} +1 -1
- package/dist/index-ClP9Gq3W.cjs +93 -0
- package/dist/index-CwMEGzur.js +58458 -0
- package/dist/{index-B0bs5G6n.cjs → index-Ddr99mq4.cjs} +1 -1
- package/dist/{index-C5XXJX1_.cjs → index-DuVnZGZk.cjs} +1 -1
- package/dist/{index-GVGs8lwh.js → index-RubzksMv.js} +1 -1
- package/dist/index.cjs.js +1 -1
- package/dist/index.d.ts +256 -6
- package/dist/index.es.min-BpHMrg2Y.cjs +2 -0
- package/dist/index.es.min-DYp0DL9J.js +3543 -0
- package/dist/index.esm.js +5 -5
- package/dist/style.css +1 -1
- package/package.json +2 -1
- package/dist/bkflow-canvas-editor_false-B70uLuHL.cjs +0 -1
- package/dist/bkflow-canvas-editor_false-BlC281Zg.cjs +0 -1
- package/dist/bkflow-canvas-editor_false-Casww7p4.js +0 -5
- package/dist/bkflow-canvas-editor_false-i9G8sqQi.js +0 -5
- package/dist/index-BUBxGOMp.cjs +0 -74
- package/dist/index-FsDBMpW4.js +0 -50941
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),d=require("./index-BUBxGOMp.cjs"),L={class:"debug-result-node-list"},D=["data-node-id","aria-selected","onClick","onKeydown"],z=["title"],A={key:0,class:"debug-result-node-list__mock","data-test":"node-mock-flag"},P={key:1,class:"debug-result-node-list__empty"},I=e.defineComponent({__name:"node-list",props:{nodes:{},modelValue:{default:""}},emits:["update:modelValue"],setup(c,{emit:g}){const t=c,s=g,r=e.ref(""),m=e.ref("all"),_=e.ref(null),p={not_run:"未执行",finished:"成功",failed:"失败",running:"正在调试",suspended:"挂起",skipped:"跳过",revoked:"终止"},k=[{value:"all",label:"全部"},{value:"finished",icon:"bkflow-canvas-dark-circle-checkbox",iconColor:"#5fb8ac",tooltip:p.finished},{value:"failed",icon:"bkflow-canvas-dark-circle-close",iconColor:"#fa4e41",tooltip:p.failed},{value:"revoked",icon:"bkflow-canvas-stop-fill",iconColor:"#fa4e41",tooltip:p.revoked},{value:"running",iconComponent:d.LoadingStatusIcon,iconColor:"#3a84ff",tooltip:p.running},{value:"not_run",icon:"bkflow-canvas-weizhixing2",iconColor:"#b8bbc4",tooltip:p.not_run},{value:"suspended",icon:"bkflow-canvas-zanting",iconColor:"#f59500",tooltip:p.suspended},{value:"skipped",icon:"bkflow-canvas-tiaoguo2",iconColor:"#6e89af",tooltip:p.skipped}],w=e.computed(()=>k.map(a=>({...a,count:a.value==="all"?t.nodes.length:t.nodes.filter(n=>n.status===a.value).length}))),V=e.computed(()=>{const a=r.value.trim().toLowerCase();return t.nodes.filter(n=>m.value!=="all"&&n.status!==m.value?!1:a?n.name.toLowerCase().includes(a)||n.type.toLowerCase().includes(a)||(n.typeName??"").toLowerCase().includes(a):!0)}),C=e.computed(()=>r.value.trim()?"搜索结果为空":m.value!=="all"?`暂无${p[m.value]}状态节点`:"暂无节点"),x=()=>{r.value="",m.value="all"},y=a=>{const n=_.value,v=n?.querySelector(`[data-node-id="${CSS.escape(a)}"]`);if(!n||!v)return;const o=n.getBoundingClientRect(),b=v.getBoundingClientRect();b.top<o.top?n.scrollTop-=o.top-b.top:b.bottom>o.bottom&&(n.scrollTop+=b.bottom-o.bottom)};return e.watch(()=>t.modelValue,async a=>{if(!a)return;!V.value.some(v=>v.id===a)&&t.nodes.some(v=>v.id===a)&&(r.value="",m.value="all"),await e.nextTick(),y(a)},{flush:"post"}),(a,n)=>{const v=e.resolveComponent("bk-input");return e.openBlock(),e.createElementBlock("aside",L,[e.createVNode(v,{modelValue:r.value,"onUpdate:modelValue":n[0]||(n[0]=o=>r.value=o),class:"debug-result-node-list__search",placeholder:"搜索节点名称 / 类型",type:"search",clearable:"","data-test":"node-search"},null,8,["modelValue"]),e.createVNode(d.SegmentTabs,{modelValue:m.value,"onUpdate:modelValue":n[1]||(n[1]=o=>m.value=o),class:"debug-result-node-list__filters","data-test":"status-filters",items:w.value},null,8,["modelValue","items"]),V.value.length>0?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"itemsRef",ref:_,class:"debug-result-node-list__items",role:"listbox"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(V.value,o=>(e.openBlock(),e.createElementBlock("div",{key:o.id,class:e.normalizeClass(["debug-result-node-list__item",`is-${o.status}`,{"is-active":o.id===t.modelValue,"is-unconfigured":!o.isConfigured}]),role:"option","data-test":"node-item","data-node-id":o.id,"aria-selected":o.id===t.modelValue,tabindex:"0",onClick:b=>s("update:modelValue",o.id),onKeydown:e.withKeys(e.withModifiers(b=>s("update:modelValue",o.id),["prevent"]),["enter","space"])},[e.createElementVNode("span",{class:e.normalizeClass(["debug-result-node-list__status",`is-${o.status}`,{"is-placeholder":!o.isConfigured}])},[o.icon?(e.openBlock(),e.createElementBlock("i",{key:0,class:e.normalizeClass(o.icon),"data-test":"node-icon"},null,2)):e.createCommentVNode("",!0)],2),e.createElementVNode("span",{class:"debug-result-node-list__name",title:o.isConfigured?`${o.name} ${o.typeName||o.type}`:o.name},e.toDisplayString(o.name),9,z),o.isMock?(e.openBlock(),e.createElementBlock("span",A,"MOCK")):e.createCommentVNode("",!0)],42,D))),128))],512)):(e.openBlock(),e.createElementBlock("div",P,[e.createVNode(d.EmptyException,{"is-search":!1,title:C.value,onClear:x},null,8,["title"])]))])}}}),H=d._export_sfc(I,[["__scopeId","data-v-db0cb31c"]]);function U(c){if(c==null)return"";if(typeof c=="string")return c;if(typeof c=="object"){const g=c,t=g.message;if(typeof t=="string"&&t){const s=g.type;return typeof s=="string"&&s?`${s}: ${t}`:t}try{return JSON.stringify(c)}catch{return String(c)}}return String(c)}const O={class:"debug-result-tabs"},F={class:"debug-result-tabs__failed-actions","data-test":"output-error-actions"},G={class:"debug-result-tabs__execution","data-test":"tab-execution"},K={class:"debug-result-tabs__row"},j={class:"value"},q={class:"debug-result-tabs__row"},Y={class:"value"},J={key:0,class:"debug-result-tabs__row is-error"},Q={class:"value"},W={class:"debug-result-tabs__mock-hint","data-test":"mock-banner"},X={class:"debug-result-tabs__logs","data-test":"tab-logs"},Z=e.defineComponent({__name:"result-tabs",props:{result:{},component:{},isMock:{type:Boolean,default:!1},canRunNodeDebug:{type:Boolean,default:!1}},emits:["reEditMock","runReal","runMock","logsTabActive"],setup(c,{emit:g}){const t=c,s=g,r=e.ref("execution");e.watch(r,f=>s("logsTabActive",f==="logs"),{immediate:!0});const m={not_run:"未调试",running:"正在调试",finished:"成功",failed:"失败",suspended:"挂起",skipped:"跳过",revoked:"已终止"},_=e.computed(()=>m[t.result.execution.status]??t.result.execution.status),p=e.computed(()=>d.formatSummaryDuration(t.result.execution.durationMs)),k=e.computed(()=>U(t.result.error||t.result.execution.errorDetail)),w=e.computed(()=>t.result.execution.status==="revoked"),V=e.computed(()=>d.isDebugAbnormalStatus(t.result.execution.status)),C=e.computed(()=>w.value?"该节点调试已终止,可":"该节点执行失败,可"),{loading:x,error:y,visibleInputs:a,visibleOutputs:n,outputNameMap:v}=d.usePluginParamMeta({component:()=>t.component}),o=e.computed(()=>t.result.loading||x.value),b=e.computed(()=>t.result.detailError||y.value),h=e.computed(()=>a.value.filter(({key:f})=>Object.prototype.hasOwnProperty.call(t.result.inputs,f)).map(({key:f,name:l})=>({key:f,name:l,value:t.result.inputs[f]}))),B=e.computed(()=>d.orderDebugRowsByDeclaredKeys(d.toDebugOutputValueRows(t.result.outputs,v.value),n.value.map(f=>f.key))),R=e.computed(()=>d.shouldShowMockReEditHint(t.isMock,n.value)),T=e.computed(()=>t.result.logs==null?"":d.normalizeLogText(t.result.logs));return(f,l)=>{const i=e.resolveComponent("bk-button"),u=e.resolveComponent("bk-tab-panel"),S=e.resolveComponent("bk-tab");return e.openBlock(),e.createElementBlock("div",O,[e.createVNode(S,{active:r.value,"onUpdate:active":l[3]||(l[3]=E=>r.value=E),type:"card-grid"},e.createSlots({default:e.withCtx(()=>[e.createVNode(u,{name:"execution",label:"执行信息"},{default:e.withCtx(()=>[e.createElementVNode("div",G,[e.createElementVNode("div",K,[l[8]||(l[8]=e.createElementVNode("span",{class:"label"},"执行状态",-1)),e.createElementVNode("span",j,e.toDisplayString(_.value),1)]),e.createElementVNode("div",q,[l[9]||(l[9]=e.createElementVNode("span",{class:"label"},"调试用时",-1)),e.createElementVNode("span",Y,e.toDisplayString(p.value),1)]),k.value?(e.openBlock(),e.createElementBlock("div",J,[l[10]||(l[10]=e.createElementVNode("span",{class:"label"},"错误信息",-1)),e.createElementVNode("span",Q,e.toDisplayString(k.value),1)])):e.createCommentVNode("",!0)])]),_:1}),e.createVNode(u,{name:"inputs",label:"输入参数"},{default:e.withCtx(()=>[e.createVNode(d.DebugValueTable,{rows:h.value,loading:o.value,error:b.value,"empty-text":"暂无输入参数"},null,8,["rows","loading","error"])]),_:1}),e.createVNode(u,{name:"outputs",label:"输出结果"},{default:e.withCtx(()=>[e.createVNode(d.DebugValueTable,{rows:B.value,loading:o.value,error:b.value,"empty-text":"暂无输出结果"},e.createSlots({_:2},[R.value?{name:"toolbar",fn:e.withCtx(()=>[e.createElementVNode("div",W,[l[12]||(l[12]=e.createElementVNode("i",{class:"bkflow-canvas-icon bkflow-canvas-info debug-result-tabs__mock-info","aria-hidden":"true"},null,-1)),l[13]||(l[13]=e.createElementVNode("span",null,"当前为 Mock 数据",-1)),e.createVNode(i,{text:"",theme:"primary",size:"small","data-test":"re-edit-mock",onClick:l[2]||(l[2]=E=>s("reEditMock"))},{default:e.withCtx(()=>[...l[11]||(l[11]=[e.createTextVNode(" 重新编辑 ",-1)])]),_:1})])]),key:"0"}:void 0]),1032,["rows","loading","error"])]),_:1}),e.createVNode(u,{name:"logs",label:"调用日志"},{default:e.withCtx(()=>[e.createElementVNode("div",X,[e.createVNode(d.CallLogsViewer,{"log-text":T.value,loading:t.result.logLoading,error:t.result.logError},null,8,["log-text","loading","error"])])]),_:1})]),_:2},[V.value&&t.canRunNodeDebug?{name:"setting",fn:e.withCtx(()=>[e.createElementVNode("div",F,[l[6]||(l[6]=e.createElementVNode("i",{class:"bkflow-canvas-icon bkflow-canvas-alert"},null,-1)),e.createElementVNode("span",null,e.toDisplayString(C.value),1),e.createVNode(i,{text:"",theme:"primary","data-test":"rerun-real",onClick:l[0]||(l[0]=E=>s("runReal"))},{default:e.withCtx(()=>[...l[4]||(l[4]=[e.createTextVNode("重新调试",-1)])]),_:1}),l[7]||(l[7]=e.createElementVNode("span",null,"或直接",-1)),e.createVNode(i,{text:"",theme:"primary","data-test":"run-mock",onClick:l[1]||(l[1]=E=>s("runMock"))},{default:e.withCtx(()=>[...l[5]||(l[5]=[e.createTextVNode("Mock 输出",-1)])]),_:1})])]),key:"0"}:void 0]),1032,["active"])])}}}),ee=d._export_sfc(Z,[["__scopeId","data-v-2a925689"]]),te={class:"debug-result-drawer__header"},oe={class:"debug-result-drawer__header-left"},le={class:"debug-result-drawer__body"},se={class:"debug-result-drawer__content"},ne={class:"debug-result-drawer__result"},ae={key:1,class:"debug-result-drawer__unselected","data-test":"node-unselected"},N=44,$=420,ue=e.defineComponent({__name:"index",props:{open:{type:Boolean},context:{},pipelineTree:{},mockNodeIds:{},modelValue:{default:""},result:{},hasGlobalRun:{type:Boolean,default:!1},viewParamsPending:{type:Boolean,default:!1},offsetLeft:{default:0}},emits:["update:open","update:modelValue","reEditMock","runReal","runMock","viewParams","logsTabActive"],setup(c,{emit:g}){const t=c,s=g,r=e.ref($),m=e.ref(!1);let _=0,p=0,k="",w="";const V=e.computed(()=>({left:`${t.offsetLeft}px`,height:`${t.open?r.value:N}px`})),C=()=>{t.open||(r.value=$),s("update:open",!t.open)},x=i=>{const u=i>N;u!==t.open&&s("update:open",u)},y=i=>{const u=p-(i.clientY-_);r.value=Math.max(N,Math.min(window.innerHeight*.8,u)),x(r.value)},a=()=>{document.removeEventListener("mousemove",y),document.removeEventListener("mouseup",a),document.body.style.cursor=k,document.body.style.userSelect=w,m.value=!1,r.value<=N&&(r.value=$,s("update:open",!1))},n=i=>{i.preventDefault(),m.value=!0,_=i.clientY,t.open?p=r.value:(s("update:open",!0),r.value=N,p=N),k=document.body.style.cursor,w=document.body.style.userSelect,document.body.style.cursor="ns-resize",document.body.style.userSelect="none",document.addEventListener("mousemove",y),document.addEventListener("mouseup",a)};e.onBeforeUnmount(a);const v=e.computed({get:()=>t.modelValue,set:i=>s("update:modelValue",i)});e.watch(()=>t.modelValue,i=>{i||s("logsTabActive",!1)},{immediate:!0});const o=e.computed(()=>d.buildDebugResultNodeItems(t.pipelineTree,t.context?.nodes,t.mockNodeIds)),b=e.computed(()=>t.mockNodeIds.has(t.modelValue)),h=e.computed(()=>t.pipelineTree?.activities?.[t.modelValue]?.component),B=e.computed(()=>{const i=o.value.find(u=>u.id===t.modelValue);return i?.type==="ServiceActivity"&&i.isConfigured}),R=()=>{!t.hasGlobalRun||t.viewParamsPending||s("viewParams")},T=()=>{t.modelValue&&s("reEditMock",t.modelValue)},f=()=>{t.modelValue&&s("runReal",t.modelValue)},l=()=>{t.modelValue&&s("runMock",t.modelValue)};return(i,u)=>{const S=e.resolveComponent("bk-button"),E=e.resolveDirective("bk-tooltips");return e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["debug-result-drawer-wrapper",{"is-resizing":m.value}]),style:e.normalizeStyle(V.value)},[e.createElementVNode("div",{class:"debug-result-drawer__resize",onMousedown:n},null,32),e.createElementVNode("section",{class:e.normalizeClass(["debug-result-drawer",{"is-collapsed":!t.open}])},[e.createElementVNode("header",te,[e.createElementVNode("div",oe,[u[3]||(u[3]=e.createElementVNode("span",{class:"debug-result-drawer__title"},"调试结果",-1)),u[4]||(u[4]=e.createElementVNode("span",{class:"debug-result-drawer__divider"},null,-1)),e.withDirectives((e.openBlock(),e.createBlock(S,{text:"",theme:"primary",disabled:!t.hasGlobalRun,loading:t.viewParamsPending,onClick:R},{default:e.withCtx(()=>[...u[2]||(u[2]=[e.createElementVNode("i",{class:"bkflow-canvas-icon bkflow-canvas-audit view-params-icon"},null,-1),e.createTextVNode(" 查看参数 ",-1)])]),_:1},8,["disabled","loading"])),[[E,{content:"请先进行调试",disabled:t.hasGlobalRun}]])]),e.createElementVNode("span",{class:"debug-result-drawer__collapse",onClick:C},[e.createElementVNode("span",null,e.toDisplayString(t.open?"收起":"展开"),1),e.createElementVNode("i",{class:e.normalizeClass(["bkflow-canvas-icon bkflow-canvas-arrows-down debug-result-drawer__collapse-icon",{"is-expanded":t.open}])},null,2)])]),e.createElementVNode("div",le,[e.createElementVNode("div",se,[e.createVNode(H,{modelValue:v.value,"onUpdate:modelValue":u[0]||(u[0]=M=>v.value=M),nodes:o.value},null,8,["modelValue","nodes"]),e.createElementVNode("div",ne,[t.modelValue?(e.openBlock(),e.createBlock(ee,{key:0,result:t.result,component:h.value,"is-mock":b.value,"can-run-node-debug":B.value,onReEditMock:T,onRunReal:f,onRunMock:l,onLogsTabActive:u[1]||(u[1]=M=>s("logsTabActive",M))},null,8,["result","component","is-mock","can-run-node-debug"])):(e.openBlock(),e.createElementBlock("div",ae," 请先选择节点查看调试详情 "))])])])],2)],6)}}}),re=d._export_sfc(ue,[["__scopeId","data-v-84a5277a"]]);exports.default=re;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),d=require("./index-ClP9Gq3W.cjs"),L={class:"debug-result-node-list"},D=["data-node-id","aria-selected","onClick","onKeydown"],z=["title"],A={key:0,class:"debug-result-node-list__mock","data-test":"node-mock-flag"},P={key:1,class:"debug-result-node-list__empty"},I=e.defineComponent({__name:"node-list",props:{nodes:{},modelValue:{default:""}},emits:["update:modelValue"],setup(c,{emit:g}){const t=c,s=g,r=e.ref(""),m=e.ref("all"),_=e.ref(null),p={not_run:"未执行",finished:"成功",failed:"失败",running:"正在调试",suspended:"挂起",skipped:"跳过",revoked:"终止"},k=[{value:"all",label:"全部"},{value:"finished",icon:"bkflow-canvas-dark-circle-checkbox",iconColor:"#5fb8ac",tooltip:p.finished},{value:"failed",icon:"bkflow-canvas-dark-circle-close",iconColor:"#fa4e41",tooltip:p.failed},{value:"revoked",icon:"bkflow-canvas-stop-fill",iconColor:"#fa4e41",tooltip:p.revoked},{value:"running",iconComponent:d.LoadingStatusIcon,iconColor:"#3a84ff",tooltip:p.running},{value:"not_run",icon:"bkflow-canvas-weizhixing2",iconColor:"#b8bbc4",tooltip:p.not_run},{value:"suspended",icon:"bkflow-canvas-zanting",iconColor:"#f59500",tooltip:p.suspended},{value:"skipped",icon:"bkflow-canvas-tiaoguo2",iconColor:"#6e89af",tooltip:p.skipped}],w=e.computed(()=>k.map(a=>({...a,count:a.value==="all"?t.nodes.length:t.nodes.filter(n=>n.status===a.value).length}))),V=e.computed(()=>{const a=r.value.trim().toLowerCase();return t.nodes.filter(n=>m.value!=="all"&&n.status!==m.value?!1:a?n.name.toLowerCase().includes(a)||n.type.toLowerCase().includes(a)||(n.typeName??"").toLowerCase().includes(a):!0)}),C=e.computed(()=>r.value.trim()?"搜索结果为空":m.value!=="all"?`暂无${p[m.value]}状态节点`:"暂无节点"),x=()=>{r.value="",m.value="all"},y=a=>{const n=_.value,v=n?.querySelector(`[data-node-id="${CSS.escape(a)}"]`);if(!n||!v)return;const o=n.getBoundingClientRect(),b=v.getBoundingClientRect();b.top<o.top?n.scrollTop-=o.top-b.top:b.bottom>o.bottom&&(n.scrollTop+=b.bottom-o.bottom)};return e.watch(()=>t.modelValue,async a=>{if(!a)return;!V.value.some(v=>v.id===a)&&t.nodes.some(v=>v.id===a)&&(r.value="",m.value="all"),await e.nextTick(),y(a)},{flush:"post"}),(a,n)=>{const v=e.resolveComponent("bk-input");return e.openBlock(),e.createElementBlock("aside",L,[e.createVNode(v,{modelValue:r.value,"onUpdate:modelValue":n[0]||(n[0]=o=>r.value=o),class:"debug-result-node-list__search",placeholder:"搜索节点名称 / 类型",type:"search",clearable:"","data-test":"node-search"},null,8,["modelValue"]),e.createVNode(d.SegmentTabs,{modelValue:m.value,"onUpdate:modelValue":n[1]||(n[1]=o=>m.value=o),class:"debug-result-node-list__filters","data-test":"status-filters",items:w.value},null,8,["modelValue","items"]),V.value.length>0?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"itemsRef",ref:_,class:"debug-result-node-list__items",role:"listbox"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(V.value,o=>(e.openBlock(),e.createElementBlock("div",{key:o.id,class:e.normalizeClass(["debug-result-node-list__item",`is-${o.status}`,{"is-active":o.id===t.modelValue,"is-unconfigured":!o.isConfigured}]),role:"option","data-test":"node-item","data-node-id":o.id,"aria-selected":o.id===t.modelValue,tabindex:"0",onClick:b=>s("update:modelValue",o.id),onKeydown:e.withKeys(e.withModifiers(b=>s("update:modelValue",o.id),["prevent"]),["enter","space"])},[e.createElementVNode("span",{class:e.normalizeClass(["debug-result-node-list__status",`is-${o.status}`,{"is-placeholder":!o.isConfigured}])},[o.icon?(e.openBlock(),e.createElementBlock("i",{key:0,class:e.normalizeClass(o.icon),"data-test":"node-icon"},null,2)):e.createCommentVNode("",!0)],2),e.createElementVNode("span",{class:"debug-result-node-list__name",title:o.isConfigured?`${o.name} ${o.typeName||o.type}`:o.name},e.toDisplayString(o.name),9,z),o.isMock?(e.openBlock(),e.createElementBlock("span",A,"MOCK")):e.createCommentVNode("",!0)],42,D))),128))],512)):(e.openBlock(),e.createElementBlock("div",P,[e.createVNode(d.EmptyException,{"is-search":!1,title:C.value,onClear:x},null,8,["title"])]))])}}}),H=d._export_sfc(I,[["__scopeId","data-v-db0cb31c"]]);function U(c){if(c==null)return"";if(typeof c=="string")return c;if(typeof c=="object"){const g=c,t=g.message;if(typeof t=="string"&&t){const s=g.type;return typeof s=="string"&&s?`${s}: ${t}`:t}try{return JSON.stringify(c)}catch{return String(c)}}return String(c)}const O={class:"debug-result-tabs"},F={class:"debug-result-tabs__failed-actions","data-test":"output-error-actions"},G={class:"debug-result-tabs__execution","data-test":"tab-execution"},K={class:"debug-result-tabs__row"},j={class:"value"},q={class:"debug-result-tabs__row"},Y={class:"value"},J={key:0,class:"debug-result-tabs__row is-error"},Q={class:"value"},W={class:"debug-result-tabs__mock-hint","data-test":"mock-banner"},X={class:"debug-result-tabs__logs","data-test":"tab-logs"},Z=e.defineComponent({__name:"result-tabs",props:{result:{},component:{},isMock:{type:Boolean,default:!1},canRunNodeDebug:{type:Boolean,default:!1}},emits:["reEditMock","runReal","runMock","logsTabActive"],setup(c,{emit:g}){const t=c,s=g,r=e.ref("execution");e.watch(r,f=>s("logsTabActive",f==="logs"),{immediate:!0});const m={not_run:"未调试",running:"正在调试",finished:"成功",failed:"失败",suspended:"挂起",skipped:"跳过",revoked:"已终止"},_=e.computed(()=>m[t.result.execution.status]??t.result.execution.status),p=e.computed(()=>d.formatSummaryDuration(t.result.execution.durationMs)),k=e.computed(()=>U(t.result.error||t.result.execution.errorDetail)),w=e.computed(()=>t.result.execution.status==="revoked"),V=e.computed(()=>d.isDebugAbnormalStatus(t.result.execution.status)),C=e.computed(()=>w.value?"该节点调试已终止,可":"该节点执行失败,可"),{loading:x,error:y,visibleInputs:a,visibleOutputs:n,outputNameMap:v}=d.usePluginParamMeta({component:()=>t.component}),o=e.computed(()=>t.result.loading||x.value),b=e.computed(()=>t.result.detailError||y.value),h=e.computed(()=>a.value.filter(({key:f})=>Object.prototype.hasOwnProperty.call(t.result.inputs,f)).map(({key:f,name:l})=>({key:f,name:l,value:t.result.inputs[f]}))),B=e.computed(()=>d.orderDebugRowsByDeclaredKeys(d.toDebugOutputValueRows(t.result.outputs,v.value),n.value.map(f=>f.key))),R=e.computed(()=>d.shouldShowMockReEditHint(t.isMock,n.value)),T=e.computed(()=>t.result.logs==null?"":d.normalizeLogText(t.result.logs));return(f,l)=>{const i=e.resolveComponent("bk-button"),u=e.resolveComponent("bk-tab-panel"),S=e.resolveComponent("bk-tab");return e.openBlock(),e.createElementBlock("div",O,[e.createVNode(S,{active:r.value,"onUpdate:active":l[3]||(l[3]=E=>r.value=E),type:"card-grid"},e.createSlots({default:e.withCtx(()=>[e.createVNode(u,{name:"execution",label:"执行信息"},{default:e.withCtx(()=>[e.createElementVNode("div",G,[e.createElementVNode("div",K,[l[8]||(l[8]=e.createElementVNode("span",{class:"label"},"执行状态",-1)),e.createElementVNode("span",j,e.toDisplayString(_.value),1)]),e.createElementVNode("div",q,[l[9]||(l[9]=e.createElementVNode("span",{class:"label"},"调试用时",-1)),e.createElementVNode("span",Y,e.toDisplayString(p.value),1)]),k.value?(e.openBlock(),e.createElementBlock("div",J,[l[10]||(l[10]=e.createElementVNode("span",{class:"label"},"错误信息",-1)),e.createElementVNode("span",Q,e.toDisplayString(k.value),1)])):e.createCommentVNode("",!0)])]),_:1}),e.createVNode(u,{name:"inputs",label:"输入参数"},{default:e.withCtx(()=>[e.createVNode(d.DebugValueTable,{rows:h.value,loading:o.value,error:b.value,"empty-text":"暂无输入参数"},null,8,["rows","loading","error"])]),_:1}),e.createVNode(u,{name:"outputs",label:"输出结果"},{default:e.withCtx(()=>[e.createVNode(d.DebugValueTable,{rows:B.value,loading:o.value,error:b.value,"empty-text":"暂无输出结果"},e.createSlots({_:2},[R.value?{name:"toolbar",fn:e.withCtx(()=>[e.createElementVNode("div",W,[l[12]||(l[12]=e.createElementVNode("i",{class:"bkflow-canvas-icon bkflow-canvas-info debug-result-tabs__mock-info","aria-hidden":"true"},null,-1)),l[13]||(l[13]=e.createElementVNode("span",null,"当前为 Mock 数据",-1)),e.createVNode(i,{text:"",theme:"primary",size:"small","data-test":"re-edit-mock",onClick:l[2]||(l[2]=E=>s("reEditMock"))},{default:e.withCtx(()=>[...l[11]||(l[11]=[e.createTextVNode(" 重新编辑 ",-1)])]),_:1})])]),key:"0"}:void 0]),1032,["rows","loading","error"])]),_:1}),e.createVNode(u,{name:"logs",label:"调用日志"},{default:e.withCtx(()=>[e.createElementVNode("div",X,[e.createVNode(d.CallLogsViewer,{"log-text":T.value,loading:t.result.logLoading,error:t.result.logError},null,8,["log-text","loading","error"])])]),_:1})]),_:2},[V.value&&t.canRunNodeDebug?{name:"setting",fn:e.withCtx(()=>[e.createElementVNode("div",F,[l[6]||(l[6]=e.createElementVNode("i",{class:"bkflow-canvas-icon bkflow-canvas-alert"},null,-1)),e.createElementVNode("span",null,e.toDisplayString(C.value),1),e.createVNode(i,{text:"",theme:"primary","data-test":"rerun-real",onClick:l[0]||(l[0]=E=>s("runReal"))},{default:e.withCtx(()=>[...l[4]||(l[4]=[e.createTextVNode("重新调试",-1)])]),_:1}),l[7]||(l[7]=e.createElementVNode("span",null,"或直接",-1)),e.createVNode(i,{text:"",theme:"primary","data-test":"run-mock",onClick:l[1]||(l[1]=E=>s("runMock"))},{default:e.withCtx(()=>[...l[5]||(l[5]=[e.createTextVNode("Mock 输出",-1)])]),_:1})])]),key:"0"}:void 0]),1032,["active"])])}}}),ee=d._export_sfc(Z,[["__scopeId","data-v-2a925689"]]),te={class:"debug-result-drawer__header"},oe={class:"debug-result-drawer__header-left"},le={class:"debug-result-drawer__body"},se={class:"debug-result-drawer__content"},ne={class:"debug-result-drawer__result"},ae={key:1,class:"debug-result-drawer__unselected","data-test":"node-unselected"},N=44,$=420,ue=e.defineComponent({__name:"index",props:{open:{type:Boolean},context:{},pipelineTree:{},mockNodeIds:{},modelValue:{default:""},result:{},hasGlobalRun:{type:Boolean,default:!1},viewParamsPending:{type:Boolean,default:!1},offsetLeft:{default:0}},emits:["update:open","update:modelValue","reEditMock","runReal","runMock","viewParams","logsTabActive"],setup(c,{emit:g}){const t=c,s=g,r=e.ref($),m=e.ref(!1);let _=0,p=0,k="",w="";const V=e.computed(()=>({left:`${t.offsetLeft}px`,height:`${t.open?r.value:N}px`})),C=()=>{t.open||(r.value=$),s("update:open",!t.open)},x=i=>{const u=i>N;u!==t.open&&s("update:open",u)},y=i=>{const u=p-(i.clientY-_);r.value=Math.max(N,Math.min(window.innerHeight*.8,u)),x(r.value)},a=()=>{document.removeEventListener("mousemove",y),document.removeEventListener("mouseup",a),document.body.style.cursor=k,document.body.style.userSelect=w,m.value=!1,r.value<=N&&(r.value=$,s("update:open",!1))},n=i=>{i.preventDefault(),m.value=!0,_=i.clientY,t.open?p=r.value:(s("update:open",!0),r.value=N,p=N),k=document.body.style.cursor,w=document.body.style.userSelect,document.body.style.cursor="ns-resize",document.body.style.userSelect="none",document.addEventListener("mousemove",y),document.addEventListener("mouseup",a)};e.onBeforeUnmount(a);const v=e.computed({get:()=>t.modelValue,set:i=>s("update:modelValue",i)});e.watch(()=>t.modelValue,i=>{i||s("logsTabActive",!1)},{immediate:!0});const o=e.computed(()=>d.buildDebugResultNodeItems(t.pipelineTree,t.context?.nodes,t.mockNodeIds)),b=e.computed(()=>t.mockNodeIds.has(t.modelValue)),h=e.computed(()=>d.getActivityComponent(t.pipelineTree?.activities?.[t.modelValue])),B=e.computed(()=>{const i=o.value.find(u=>u.id===t.modelValue);return i?.type==="ServiceActivity"&&i.isConfigured}),R=()=>{!t.hasGlobalRun||t.viewParamsPending||s("viewParams")},T=()=>{t.modelValue&&s("reEditMock",t.modelValue)},f=()=>{t.modelValue&&s("runReal",t.modelValue)},l=()=>{t.modelValue&&s("runMock",t.modelValue)};return(i,u)=>{const S=e.resolveComponent("bk-button"),E=e.resolveDirective("bk-tooltips");return e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["debug-result-drawer-wrapper",{"is-resizing":m.value}]),style:e.normalizeStyle(V.value)},[e.createElementVNode("div",{class:"debug-result-drawer__resize",onMousedown:n},null,32),e.createElementVNode("section",{class:e.normalizeClass(["debug-result-drawer",{"is-collapsed":!t.open}])},[e.createElementVNode("header",te,[e.createElementVNode("div",oe,[u[3]||(u[3]=e.createElementVNode("span",{class:"debug-result-drawer__title"},"调试结果",-1)),u[4]||(u[4]=e.createElementVNode("span",{class:"debug-result-drawer__divider"},null,-1)),e.withDirectives((e.openBlock(),e.createBlock(S,{text:"",theme:"primary",disabled:!t.hasGlobalRun,loading:t.viewParamsPending,onClick:R},{default:e.withCtx(()=>[...u[2]||(u[2]=[e.createElementVNode("i",{class:"bkflow-canvas-icon bkflow-canvas-audit view-params-icon"},null,-1),e.createTextVNode(" 查看参数 ",-1)])]),_:1},8,["disabled","loading"])),[[E,{content:"请先进行调试",disabled:t.hasGlobalRun}]])]),e.createElementVNode("span",{class:"debug-result-drawer__collapse",onClick:C},[e.createElementVNode("span",null,e.toDisplayString(t.open?"收起":"展开"),1),e.createElementVNode("i",{class:e.normalizeClass(["bkflow-canvas-icon bkflow-canvas-arrows-down debug-result-drawer__collapse-icon",{"is-expanded":t.open}])},null,2)])]),e.createElementVNode("div",le,[e.createElementVNode("div",se,[e.createVNode(H,{modelValue:v.value,"onUpdate:modelValue":u[0]||(u[0]=M=>v.value=M),nodes:o.value},null,8,["modelValue","nodes"]),e.createElementVNode("div",ne,[t.modelValue?(e.openBlock(),e.createBlock(ee,{key:0,result:t.result,component:h.value,"is-mock":b.value,"can-run-node-debug":B.value,onReEditMock:T,onRunReal:f,onRunMock:l,onLogsTabActive:u[1]||(u[1]=M=>s("logsTabActive",M))},null,8,["result","component","is-mock","can-run-node-debug"])):(e.openBlock(),e.createElementBlock("div",ae," 请先选择节点查看调试详情 "))])])])],2)],6)}}}),re=d._export_sfc(ue,[["__scopeId","data-v-1d34ca9a"]]);exports.default=re;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),M=require("bkui-vue/lib"),N=require("bkui-vue/lib/message"),s=require("./index-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),M=require("bkui-vue/lib"),N=require("bkui-vue/lib/message"),s=require("./index-ClP9Gq3W.cjs"),O={key:0,class:"mock-data-sideslider__title-sep"},F=["title"],S={class:"mock-data-sideslider"},D={class:"mock-data-sideslider__footer"},j="当前节点的输出不支持mock,是否需要在调试时跳过当前节点?",q="跳过调试",Y=e.defineComponent({__name:"index",props:{show:{type:Boolean},node:{default:null},outputs:{default:()=>({})},pending:{type:Boolean,default:!1}},emits:["confirm","close","update:show"],setup(f,{emit:y}){const o=f,p=y,h=s.useFlowApiConfig(),k=e.ref(!1),u=e.shallowRef([]),d=e.ref({}),_=e.ref({}),m=e.ref(!1),b=e.computed(()=>m.value?j:"暂无输出结果"),C=e.computed(()=>m.value?q:"确定"),w=async()=>{if(o.node){k.value=!0,_.value={},m.value=!1;try{const t=await s.pluginDetailRequest(h,o.node.component);u.value=s.mergeOutputs(t.outputs??[]),m.value=s.hasOnlySystemOutputs(t.outputs);const n=o.outputs??{},a={};u.value.forEach(l=>{const c=Object.prototype.hasOwnProperty.call(n,l.key)?n[l.key]:l.type==="object"?{}:void 0,r=s.resolveMockFormControl(l);a[l.key]=r==="json-editor"||r==="data-table"?s.formatJsonFieldValue(c):c}),d.value=a}catch(t){console.error(t),u.value=[],d.value={},m.value=!1,N({theme:"error",message:"加载输出结果失败"})}finally{k.value=!1}}},g=()=>{const t={},n={};return u.value.forEach(a=>{const l=d.value[a.key],c=s.resolveMockFormControl(a);if(c==="json-editor"||c==="data-table"){const r=s.parseJsonFieldValue(l);if(!r.valid){t[a.key]=r.message;return}r.value!==void 0&&(n[a.key]=r.value);return}l!==void 0&&l!==""&&(n[a.key]=l)}),{errors:t,outputs:n}},x=t=>{M.InfoBox({title:"确认 Mock 输出?",content:"Mock 输出将覆盖当前输出结果,执行时跳过该节点并以 Mock 值替代实际输出",confirmText:"确定",cancelText:"取消",width:400,onConfirm:()=>{t()}})},V=()=>{if(m.value){p("confirm",{outputs:{}});return}const{errors:t,outputs:n}=g();_.value=t,!(Object.keys(t).length>0)&&x(()=>p("confirm",{outputs:n}))},v=()=>{p("close"),p("update:show",!1)};return e.watch(()=>[o.show,o.node?.id],([t])=>{t&&o.node&&(d.value=s.cloneDeep(o.outputs??{}),w())},{immediate:!0}),(t,n)=>{const a=e.resolveComponent("bk-form-item"),l=e.resolveComponent("bk-form"),c=e.resolveComponent("bk-exception"),r=e.resolveComponent("bk-button"),B=e.resolveComponent("bk-sideslider"),E=e.resolveDirective("bkloading");return e.openBlock(),e.createBlock(B,{"is-show":o.show,width:960,"quick-close":"","esc-close":!1,onClosed:v},{header:e.withCtx(()=>[n[0]||(n[0]=e.createElementVNode("span",{class:"mock-data-sideslider__title"},"Mock输出",-1)),o.node?.name?(e.openBlock(),e.createElementBlock("span",O,"-")):e.createCommentVNode("",!0),o.node?.name?(e.openBlock(),e.createElementBlock("span",{key:1,class:"mock-data-sideslider__title-node",title:o.node.name},e.toDisplayString(o.node.name),9,F)):e.createCommentVNode("",!0)]),footer:e.withCtx(()=>[e.createElementVNode("div",D,[e.createVNode(r,{theme:"primary","data-test":"mock-confirm",loading:o.pending,onClick:V},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(C.value),1)]),_:1},8,["loading"]),e.createVNode(r,{disabled:o.pending,onClick:v},{default:e.withCtx(()=>[...n[1]||(n[1]=[e.createTextVNode("取消",-1)])]),_:1},8,["disabled"])])]),default:e.withCtx(()=>[e.withDirectives((e.openBlock(),e.createElementBlock("div",S,[u.value.length>0?(e.openBlock(),e.createBlock(l,{key:0,"form-type":"vertical","label-width":120,"data-test":"mock-outputs-form"},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(u.value,i=>(e.openBlock(),e.createBlock(a,{key:i.key,label:i.name||i.key},{default:e.withCtx(()=>[e.createVNode(s.MockFieldRenderer,{modelValue:d.value[i.key],"onUpdate:modelValue":T=>d.value[i.key]=T,field:i,error:_.value[i.key]},null,8,["modelValue","onUpdate:modelValue","field","error"])]),_:2},1032,["label"]))),128))]),_:1})):k.value?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(c,{key:1,class:"mock-data-sideslider__exception",scene:"part",type:"empty",title:b.value},null,8,["title"]))])),[[E,{loading:k.value}]])]),_:1},8,["is-show"])}}}),I=s._export_sfc(Y,[["__scopeId","data-v-c4e2476a"]]);exports.default=I;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { defineComponent as A, ref as V, shallowRef as x, computed as C, watch as U, resolveComponent as j, resolveDirective as K, openBlock as l, createBlock as f, createSlots as S, withCtx as y, withDirectives as G, createElementBlock as d, createElementVNode as i, createCommentVNode as v, Fragment as H, renderList as J, toDisplayString as B, unref as Y, createVNode as R, createTextVNode as E } from "vue";
|
|
2
|
-
import { c as _, u as z, i as M, b as Q, d as W, g as X, D as Z, B as ee, R as te, E as ae, _ as oe } from "./index-
|
|
2
|
+
import { c as _, u as z, i as M, b as Q, d as W, g as X, D as Z, B as ee, R as te, E as ae, _ as oe } from "./index-CwMEGzur.js";
|
|
3
3
|
import "bkui-vue/lib/message";
|
|
4
4
|
import "bkui-vue/lib/icon";
|
|
5
5
|
import "monaco-editor";
|
package/dist/index.cjs.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./index-
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./index-ClP9Gq3W.cjs"),o=require("./context-Bj442dps.cjs");exports.BkFlowCanvas=e.BkFlowCanvas;exports.BkFlowModelAccessor=e.BkFlowModelAccessor;exports.BkFlowNodeAccessor=e.BkFlowNodeAccessor;exports.FlowCreateTask=e.FlowCreateTask;exports.FlowDebug=e.FlowDebug;exports.FlowDetail=e.index;exports.FlowEdit=e.edit;exports.FlowExecute=e.execute;exports.FlowMockDebug=e.mock;exports.FlowView=e.view;exports.bkflowConnectionValidator=e.bkflowConnectionValidator;exports.createBkflowPlugin=e.createBkflowPlugin;exports.createBkflowSchema=e.createBkflowSchema;exports.createExecutionStatusPlugin=e.createExecutionStatusPlugin;exports.default=e.index$1;exports.exportToPipelineTree=e.exportToPipelineTree;exports.getUniformApiPluginFormValue=e.getUniformApiPluginFormValue;exports.getVariableDefaultConfig=e.getVariableDefaultConfig;exports.importFromPipelineTree=e.importFromPipelineTree;exports.isMockableNode=e.isMockableNode;exports.mergeOutputs=e.mergeOutputs;exports.normalizePluginOutputItems=e.normalizePluginOutputItems;exports.provideFilterVariableConfig=e.provideFilterVariableConfig;exports.provideFlowApiConfig=e.provideFlowApiConfig;exports.provideMemberSelectorConfig=e.provideMemberSelectorConfig;exports.provideSelectPanelConfig=e.provideSelectPanelConfig;exports.resolveExecutionActions=e.resolveExecutionActions;exports.resolveMockFormControl=e.resolveMockFormControl;exports.useFlowApiConfig=e.useFlowApiConfig;exports.useFlowEditApiConfig=e.useFlowEditApiConfig;exports.useFlowViewApiConfig=e.useFlowViewApiConfig;exports.useMemberSelectorConfig=e.useMemberSelectorConfig;exports.useSelectPanelConfig=e.useSelectPanelConfig;exports.validatePipelineTree=e.validatePipelineTree;exports.generateId=o.generateId;exports.random4=o.random4;
|
package/dist/index.d.ts
CHANGED
|
@@ -124,7 +124,7 @@ type PortOrientation = 'Top' | 'Right' | 'Bottom' | 'Left';
|
|
|
124
124
|
|
|
125
125
|
type GatewayType = 'ExclusiveGateway' | 'ParallelGateway' | 'ConditionalParallelGateway' | 'ConvergeGateway';
|
|
126
126
|
|
|
127
|
-
type NodeType = StartEvent | EndEvent | Activity | Gateway;
|
|
127
|
+
type NodeType = StartEvent | EndEvent | Activity | SubProcessActivity | SubCanvasActivity | Gateway;
|
|
128
128
|
|
|
129
129
|
interface PluginInputDataItem {
|
|
130
130
|
value:
|
|
@@ -170,6 +170,8 @@ interface Activity {
|
|
|
170
170
|
type: 'ServiceActivity';
|
|
171
171
|
retryable: boolean;
|
|
172
172
|
skippable: boolean;
|
|
173
|
+
/** 是否可选节点(执行时可选跳过)默认 true */
|
|
174
|
+
optional: boolean;
|
|
173
175
|
auto_retry: {
|
|
174
176
|
enable: boolean;
|
|
175
177
|
interval: number;
|
|
@@ -187,12 +189,148 @@ interface Activity {
|
|
|
187
189
|
skip?: boolean;
|
|
188
190
|
/** 执行态:是否自动忽略错误 */
|
|
189
191
|
error_ignored?: boolean;
|
|
190
|
-
/**
|
|
191
|
-
loop?: number;
|
|
192
|
+
/** 执行态:循环执行次数(未执行时为 null,与 SubProcessActivity 同源于执行态接口) */
|
|
193
|
+
loop?: number | null;
|
|
192
194
|
/** 执行态:生命周期阶段 */
|
|
193
195
|
phase?: number;
|
|
196
|
+
parent?: string | null;
|
|
194
197
|
}
|
|
195
198
|
|
|
199
|
+
/**
|
|
200
|
+
* 循环执行配置(子流程 / 循环容器节点的 loop_config)
|
|
201
|
+
*/
|
|
202
|
+
interface LoopConfig {
|
|
203
|
+
/** 是否启用循环执行 */
|
|
204
|
+
enable: boolean;
|
|
205
|
+
/** array_loop 按数组变量循环 / time_loop 固定循环次数 */
|
|
206
|
+
type: 'array_loop' | 'time_loop';
|
|
207
|
+
/** 固定循环次数(time_loop,默认 3,最大 100);array_loop 且数据来源含变量时为 null */
|
|
208
|
+
loop_times?: number | null;
|
|
209
|
+
/**
|
|
210
|
+
* 数组循环变量(array_loop):循环变量名 → 数据来源。
|
|
211
|
+
* 编辑态为 UI 数组 [{name, value}];保存输出为 key-value 对象(如 { '${loop_test1}': '1,2' })。
|
|
212
|
+
*/
|
|
213
|
+
loop_params?: { name: string; value: string }[] | Record<string, string>;
|
|
214
|
+
/** 循环失败自动跳过(AS) */
|
|
215
|
+
fail_skip?: boolean;
|
|
216
|
+
/** 循环失败手动重试(MR) */
|
|
217
|
+
retryable?: boolean;
|
|
218
|
+
/** 循环失败手动跳过(MS) */
|
|
219
|
+
skippable?: boolean;
|
|
220
|
+
/** 循环输出变量outputs */
|
|
221
|
+
outputs_key?: string;
|
|
222
|
+
[key: string]: any;
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
/**
|
|
226
|
+
* 子流程(SubProcess)活动节点。
|
|
227
|
+
*/
|
|
228
|
+
interface SubProcessActivity {
|
|
229
|
+
id: string;
|
|
230
|
+
name: string;
|
|
231
|
+
stage_name?: string;
|
|
232
|
+
incoming: string[];
|
|
233
|
+
outgoing: string;
|
|
234
|
+
type: 'SubProcess';
|
|
235
|
+
/** 被引用的模板 ID */
|
|
236
|
+
template_id: string | number;
|
|
237
|
+
/** 模板版本 */
|
|
238
|
+
version?: string;
|
|
239
|
+
/** 变量映射常量 */
|
|
240
|
+
constants?: Record<string, any>;
|
|
241
|
+
/** 是否始终使用最新版本 */
|
|
242
|
+
always_use_latest?: boolean;
|
|
243
|
+
/** 生效版本方案列表 */
|
|
244
|
+
scheme_id_list?: string[];
|
|
245
|
+
/** 模板来源 */
|
|
246
|
+
template_source?: string;
|
|
247
|
+
/** 是否自动忽略错误(AS) */
|
|
248
|
+
error_ignorable: boolean;
|
|
249
|
+
/** 是否可手动重试(MR) */
|
|
250
|
+
retryable: boolean;
|
|
251
|
+
/** 是否可手动跳过(MS) */
|
|
252
|
+
skippable: boolean;
|
|
253
|
+
/** 是否可选节点(执行时可选跳过)BKFlow 必填 */
|
|
254
|
+
optional: boolean;
|
|
255
|
+
/** 已勾选(关联全局变量)的 key 列表 */
|
|
256
|
+
hooked_constants?: string[];
|
|
257
|
+
/** 自动重试配置(AR) */
|
|
258
|
+
auto_retry: {
|
|
259
|
+
enable: boolean;
|
|
260
|
+
interval: number;
|
|
261
|
+
times: number;
|
|
262
|
+
};
|
|
263
|
+
/** 超时控制配置 */
|
|
264
|
+
timeout_config: {
|
|
265
|
+
enable: boolean;
|
|
266
|
+
seconds: number;
|
|
267
|
+
action: string;
|
|
268
|
+
};
|
|
269
|
+
/** 循环执行配置 */
|
|
270
|
+
loop_config?: LoopConfig;
|
|
271
|
+
/** 父级分组 ID(SubCanvas 循环容器嵌套场景),顶层节点为 null */
|
|
272
|
+
parent?: string | null;
|
|
273
|
+
/** 节点标签 */
|
|
274
|
+
labels?: string[];
|
|
275
|
+
status?: NodeExecutionStatus;
|
|
276
|
+
/** 执行态:循环执行次数(未执行时为 null) */
|
|
277
|
+
loop?: number | null;
|
|
278
|
+
/** 执行态:实际重试次数 */
|
|
279
|
+
retry?: number;
|
|
280
|
+
/** 执行态:是否被跳过 */
|
|
281
|
+
skip?: boolean;
|
|
282
|
+
/** 执行态:是否自动忽略错误 */
|
|
283
|
+
error_ignored?: boolean;
|
|
284
|
+
/** 执行态:生命周期阶段 */
|
|
285
|
+
phase?: number;
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
/**
|
|
289
|
+
* 循环体容器节点(SubCanvas)节点。
|
|
290
|
+
*/
|
|
291
|
+
interface SubCanvasActivity {
|
|
292
|
+
id: string;
|
|
293
|
+
name: string;
|
|
294
|
+
stage_name?: string;
|
|
295
|
+
type: 'SubCanvas';
|
|
296
|
+
incoming: string[];
|
|
297
|
+
outgoing: string;
|
|
298
|
+
optional?: boolean;
|
|
299
|
+
/** 循环执行配置 */
|
|
300
|
+
loop_config?: LoopConfig;
|
|
301
|
+
/** 嵌套的完整子流程 */
|
|
302
|
+
pipeline: PipelineTree;
|
|
303
|
+
/** 节点标签 */
|
|
304
|
+
labels?: string[];
|
|
305
|
+
status?: NodeExecutionStatus;
|
|
306
|
+
/** 执行态:循环执行次数(未执行时为 null) */
|
|
307
|
+
loop?: number | null;
|
|
308
|
+
error_ignorable?: boolean;
|
|
309
|
+
retryable?: boolean;
|
|
310
|
+
skippable?: boolean;
|
|
311
|
+
auto_retry?: {
|
|
312
|
+
enable: boolean;
|
|
313
|
+
interval: number;
|
|
314
|
+
times: number;
|
|
315
|
+
};
|
|
316
|
+
timeout_config?: {
|
|
317
|
+
enable: boolean;
|
|
318
|
+
seconds: number;
|
|
319
|
+
action: string;
|
|
320
|
+
};
|
|
321
|
+
/** 执行态:实际重试次数 */
|
|
322
|
+
retry?: number;
|
|
323
|
+
/** 执行态:是否被跳过 */
|
|
324
|
+
skip?: boolean;
|
|
325
|
+
/** 执行态:是否自动忽略错误 */
|
|
326
|
+
error_ignored?: boolean;
|
|
327
|
+
/** 执行态:生命周期阶段 */
|
|
328
|
+
phase?: number;
|
|
329
|
+
parent?: string | null;
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
type ActivityUnion = Activity | SubProcessActivity | SubCanvasActivity;
|
|
333
|
+
|
|
196
334
|
interface StartEvent {
|
|
197
335
|
id: string;
|
|
198
336
|
name: string;
|
|
@@ -234,6 +372,7 @@ interface Gateway {
|
|
|
234
372
|
parse_lang?: 'boolrule' | 'FEEL' | 'MAKO';
|
|
235
373
|
};
|
|
236
374
|
status?: NodeExecutionStatus;
|
|
375
|
+
parent?: string | null;
|
|
237
376
|
}
|
|
238
377
|
|
|
239
378
|
interface Flow {
|
|
@@ -249,15 +388,21 @@ interface Location {
|
|
|
249
388
|
| 'startpoint'
|
|
250
389
|
| 'endpoint'
|
|
251
390
|
| 'tasknode'
|
|
391
|
+
| 'subflow'
|
|
392
|
+
| 'SubCanvas'
|
|
252
393
|
| 'branchgateway'
|
|
253
394
|
| 'convergegateway'
|
|
254
395
|
| 'parallelgateway'
|
|
255
396
|
| 'conditionalparallelgateway';
|
|
256
397
|
x: number;
|
|
257
398
|
y: number;
|
|
399
|
+
/** 容器节点(SubCanvas)resize 后持久化的尺寸 */
|
|
400
|
+
width?: number;
|
|
401
|
+
height?: number;
|
|
258
402
|
group?: string;
|
|
259
403
|
icon?: string;
|
|
260
404
|
name?: string;
|
|
405
|
+
parent?: string | boolean;
|
|
261
406
|
}
|
|
262
407
|
|
|
263
408
|
interface Line {
|
|
@@ -303,7 +448,7 @@ interface Variable {
|
|
|
303
448
|
}
|
|
304
449
|
|
|
305
450
|
interface PipelineTree {
|
|
306
|
-
activities: Record<string,
|
|
451
|
+
activities: Record<string, ActivityUnion>;
|
|
307
452
|
end_event: EndEvent;
|
|
308
453
|
flows: Record<string, Flow>;
|
|
309
454
|
gateways: Record<string, Gateway>;
|
|
@@ -421,6 +566,42 @@ interface UniformApiPluginInputsItem$1 {
|
|
|
421
566
|
_slots?: Record<string, SlotFieldConfig | SlotArgConfig>;
|
|
422
567
|
}
|
|
423
568
|
|
|
569
|
+
interface SubflowTemplateItem {
|
|
570
|
+
id: number | string;
|
|
571
|
+
name: string;
|
|
572
|
+
/** 模板版本(不传则默认使用最新版本) */
|
|
573
|
+
version?: string;
|
|
574
|
+
/** 展示用副文本(如更新时间 / 描述等,可选) */
|
|
575
|
+
description?: string;
|
|
576
|
+
/** 兼容接入方列表接口的扩展字段 */
|
|
577
|
+
[key: string]: any;
|
|
578
|
+
}
|
|
579
|
+
interface SubflowUpdateItem {
|
|
580
|
+
/** 子流程节点 ID(对应 pipeline_tree.activities 的 key) */
|
|
581
|
+
nodeId: string;
|
|
582
|
+
/** 该节点引用的子流程模板是否有新版本(true 时节点显示红点并计入提示条) */
|
|
583
|
+
expired: boolean;
|
|
584
|
+
/** 子流程模板名称(可选,仅作提示展示) */
|
|
585
|
+
templateName?: string;
|
|
586
|
+
/** 兼容接入方的扩展字段 */
|
|
587
|
+
[key: string]: any;
|
|
588
|
+
}
|
|
589
|
+
interface SubprocessInfoItem {
|
|
590
|
+
/** 子流程模板 ID */
|
|
591
|
+
subprocess_template_id: string | number;
|
|
592
|
+
/** 子流程节点 ID(对应 pipeline_tree.activities 的 key) */
|
|
593
|
+
subprocess_node_id: string;
|
|
594
|
+
/** 节点当前引用的子流程模板版本 */
|
|
595
|
+
version: string;
|
|
596
|
+
/** 是否总是使用最新版本 */
|
|
597
|
+
always_use_latest: boolean;
|
|
598
|
+
/** 引用的子流程模板是否有新版本 */
|
|
599
|
+
expired: boolean;
|
|
600
|
+
/** 子流程模板名称 */
|
|
601
|
+
subprocess_template_name?: string;
|
|
602
|
+
/** 兼容接入方的扩展字段 */
|
|
603
|
+
[key: string]: any;
|
|
604
|
+
}
|
|
424
605
|
interface FlowTemplate {
|
|
425
606
|
id: number;
|
|
426
607
|
name: string;
|
|
@@ -430,6 +611,8 @@ interface FlowTemplate {
|
|
|
430
611
|
extra_info: Record<string, any>;
|
|
431
612
|
triggers: TriggerItem[];
|
|
432
613
|
version: string;
|
|
614
|
+
/** 子流程更新信息(后端计算好 expired 状态,SDK 据此渲染红点/提示条) */
|
|
615
|
+
subprocess_info?: SubprocessInfoItem[];
|
|
433
616
|
}
|
|
434
617
|
interface FlowDetailByVersion {
|
|
435
618
|
constants_not_referred: Record<string, Variable>;
|
|
@@ -1194,7 +1377,7 @@ interface FlowViewApiConfig {
|
|
|
1194
1377
|
space_id: number;
|
|
1195
1378
|
};
|
|
1196
1379
|
fetchFlowDraftDetail?: (id: string) => Promise<FlowDraftDetail>;
|
|
1197
|
-
fetchFlowDetailByVersion?: (id: string, version
|
|
1380
|
+
fetchFlowDetailByVersion?: (id: string, version?: string) => Promise<FlowDetailByVersion>;
|
|
1198
1381
|
fetchVariableRef?: (params: {
|
|
1199
1382
|
template_id: number;
|
|
1200
1383
|
activities: Record<string, any>;
|
|
@@ -1248,6 +1431,10 @@ interface FlowEditApiConfig extends FlowViewApiConfig {
|
|
|
1248
1431
|
saveFlow: (id: string, params: UpdateFlowParams) => Promise<void>;
|
|
1249
1432
|
fetchBkFlowInnerPluginList: () => Promise<BkflowInnerPluginMetaItem[]>;
|
|
1250
1433
|
fetchBkFlowInnerPluginDetail: (code: string, version: string) => Promise<BkflowInnerPluginMetaItem>;
|
|
1434
|
+
fetchSubprocessOutput: (params?: {
|
|
1435
|
+
code?: string;
|
|
1436
|
+
version?: string;
|
|
1437
|
+
}) => Promise<BkflowInnerPluginMetaItem>;
|
|
1251
1438
|
fetchInnerVariableDetail: (code: string) => Promise<BkflowInnerPluginMetaItem>;
|
|
1252
1439
|
fetchBkFlowThirdPartyPluginList: (tag: number) => Promise<{
|
|
1253
1440
|
data: {
|
|
@@ -1268,6 +1455,20 @@ interface FlowEditApiConfig extends FlowViewApiConfig {
|
|
|
1268
1455
|
fetchPluginGroupList: () => Promise<PluginGroupConfig[]>;
|
|
1269
1456
|
fetchCategoryPlugins: (category: string) => Promise<PluginMetaItem[]>;
|
|
1270
1457
|
fetchAllPluginGroups: () => Promise<GroupsPluginItem[]>;
|
|
1458
|
+
/**
|
|
1459
|
+
* 获取子流程模板列表
|
|
1460
|
+
*/
|
|
1461
|
+
fetchSubflowTemplateList?: (params: {
|
|
1462
|
+
/** 每页条数 */
|
|
1463
|
+
limit: number;
|
|
1464
|
+
/** 偏移量 */
|
|
1465
|
+
offset: number;
|
|
1466
|
+
/** 名称模糊搜索*/
|
|
1467
|
+
keyword?: string;
|
|
1468
|
+
}) => Promise<{
|
|
1469
|
+
results: SubflowTemplateItem[];
|
|
1470
|
+
count: number;
|
|
1471
|
+
}>;
|
|
1271
1472
|
enableThirdPlugin?: boolean;
|
|
1272
1473
|
fetchPluginDetail?: (id: string) => Promise<UniformApiPluginDetail>;
|
|
1273
1474
|
fetchApplyInstructionData?: (params: any) => Promise<any>;
|
|
@@ -1463,9 +1664,29 @@ type __VLS_Props$5 = {
|
|
|
1463
1664
|
apiConfig: FlowApiConfig;
|
|
1464
1665
|
bkflowSaasUrl?: string;
|
|
1465
1666
|
showHeader?: boolean;
|
|
1667
|
+
showNodeActions?: boolean;
|
|
1668
|
+
autoFitView?: boolean;
|
|
1466
1669
|
onBack?: () => void;
|
|
1467
1670
|
};
|
|
1468
|
-
|
|
1671
|
+
/**
|
|
1672
|
+
* 网关条件数据
|
|
1673
|
+
*/
|
|
1674
|
+
interface GatewayConditionClickData {
|
|
1675
|
+
id: string;
|
|
1676
|
+
nodeId: string;
|
|
1677
|
+
name: string;
|
|
1678
|
+
value: string;
|
|
1679
|
+
tag: string;
|
|
1680
|
+
loc?: number;
|
|
1681
|
+
isDefault?: boolean;
|
|
1682
|
+
}
|
|
1683
|
+
declare function focusNode(nodeId: string, options?: {
|
|
1684
|
+
select?: boolean;
|
|
1685
|
+
highlight?: boolean;
|
|
1686
|
+
}): boolean;
|
|
1687
|
+
declare const __VLS_base$5: vue.DefineComponent<__VLS_Props$5, {
|
|
1688
|
+
focusNode: typeof focusNode;
|
|
1689
|
+
}, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
|
|
1469
1690
|
retry: (nodeId: string) => any;
|
|
1470
1691
|
skip: (nodeId: string) => any;
|
|
1471
1692
|
resume: (nodeId: string) => any;
|
|
@@ -1479,6 +1700,8 @@ declare const __VLS_base$5: vue.DefineComponent<__VLS_Props$5, {}, {}, {}, {}, v
|
|
|
1479
1700
|
nodeId: string;
|
|
1480
1701
|
} & {
|
|
1481
1702
|
type: "node.click";
|
|
1703
|
+
nodeId: string;
|
|
1704
|
+
condition?: GatewayConditionClickData;
|
|
1482
1705
|
}) => any;
|
|
1483
1706
|
"execution-action": (payload: {
|
|
1484
1707
|
nodeId: string;
|
|
@@ -1498,6 +1721,8 @@ declare const __VLS_base$5: vue.DefineComponent<__VLS_Props$5, {}, {}, {}, {}, v
|
|
|
1498
1721
|
nodeId: string;
|
|
1499
1722
|
} & {
|
|
1500
1723
|
type: "node.click";
|
|
1724
|
+
nodeId: string;
|
|
1725
|
+
condition?: GatewayConditionClickData;
|
|
1501
1726
|
}) => any) | undefined;
|
|
1502
1727
|
"onExecution-action"?: ((payload: {
|
|
1503
1728
|
nodeId: string;
|
|
@@ -1507,6 +1732,8 @@ declare const __VLS_base$5: vue.DefineComponent<__VLS_Props$5, {}, {}, {}, {}, v
|
|
|
1507
1732
|
showHeader: boolean;
|
|
1508
1733
|
defaultZoom: number;
|
|
1509
1734
|
nodeStates: TaskExecutionStates;
|
|
1735
|
+
showNodeActions: boolean;
|
|
1736
|
+
autoFitView: boolean;
|
|
1510
1737
|
}, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
|
|
1511
1738
|
declare const __VLS_export$5: __VLS_WithSlots$5<typeof __VLS_base$5, __VLS_Slots$5>;
|
|
1512
1739
|
declare const _default$6: typeof __VLS_export$5;
|
|
@@ -1629,6 +1856,7 @@ type __VLS_Props$3 = {
|
|
|
1629
1856
|
taskId: number | string;
|
|
1630
1857
|
templateId: number | string;
|
|
1631
1858
|
}) => void;
|
|
1859
|
+
onSubflowView?: (template: SubflowTemplateItem) => void;
|
|
1632
1860
|
enableVersion?: boolean;
|
|
1633
1861
|
flowVersion?: string;
|
|
1634
1862
|
defaultZoom?: number;
|
|
@@ -1637,6 +1865,7 @@ type __VLS_Props$3 = {
|
|
|
1637
1865
|
quickAdd?: QuickAddConfig;
|
|
1638
1866
|
/** 是否隐藏基础信息中的触发器配置表单,默认 false */
|
|
1639
1867
|
hideTrigger?: boolean;
|
|
1868
|
+
subflowUpdateList?: SubflowUpdateItem[];
|
|
1640
1869
|
};
|
|
1641
1870
|
declare const __VLS_base$3: vue.DefineComponent<__VLS_Props$3, {
|
|
1642
1871
|
isFlowEdited: ComputedRef<FlowEditExpose["isFlowEdited"]>;
|
|
@@ -1657,6 +1886,7 @@ declare const __VLS_base$3: vue.DefineComponent<__VLS_Props$3, {
|
|
|
1657
1886
|
exitEdit: () => any;
|
|
1658
1887
|
debugBeforeClose: () => any;
|
|
1659
1888
|
createVariable: (payload: CreateVariablePayload) => any;
|
|
1889
|
+
subflowView: (template: SubflowTemplateItem) => any;
|
|
1660
1890
|
}, string, vue.PublicProps, Readonly<__VLS_Props$3> & Readonly<{
|
|
1661
1891
|
onBack?: (() => any) | undefined;
|
|
1662
1892
|
onSave?: ((flowData: FlowTemplate) => any) | undefined;
|
|
@@ -1668,6 +1898,7 @@ declare const __VLS_base$3: vue.DefineComponent<__VLS_Props$3, {
|
|
|
1668
1898
|
onExitEdit?: (() => any) | undefined;
|
|
1669
1899
|
onDebugBeforeClose?: (() => any) | undefined;
|
|
1670
1900
|
onCreateVariable?: ((payload: CreateVariablePayload) => any) | undefined;
|
|
1901
|
+
onSubflowView?: ((template: SubflowTemplateItem) => any) | undefined;
|
|
1671
1902
|
}>, {
|
|
1672
1903
|
quickAdd: QuickAddConfig;
|
|
1673
1904
|
enableThirdPlugin: boolean;
|
|
@@ -1745,6 +1976,7 @@ type __VLS_Props$2 = {
|
|
|
1745
1976
|
}) => void;
|
|
1746
1977
|
/** 是否隐藏基础信息中的触发器配置表单,默认 false */
|
|
1747
1978
|
hideTrigger?: boolean;
|
|
1979
|
+
subflowUpdateList?: SubflowUpdateItem[];
|
|
1748
1980
|
};
|
|
1749
1981
|
declare const __VLS_base$2: vue.DefineComponent<__VLS_Props$2, {
|
|
1750
1982
|
zoomToFit: (options?: ZoomToFitOptions) => void;
|
|
@@ -1986,6 +2218,13 @@ declare class BkFlowNodeAccessor {
|
|
|
1986
2218
|
get convergeGatewayId(): string | undefined;
|
|
1987
2219
|
get isGateway(): boolean;
|
|
1988
2220
|
get isTask(): boolean;
|
|
2221
|
+
get templateId(): string | number | undefined;
|
|
2222
|
+
get subflowConstants(): Record<string, any> | undefined;
|
|
2223
|
+
get subflowVersion(): string | undefined;
|
|
2224
|
+
get alwaysUseLatest(): boolean | undefined;
|
|
2225
|
+
get schemeIdList(): string[] | undefined;
|
|
2226
|
+
get templateSource(): string | undefined;
|
|
2227
|
+
get isSubflow(): boolean;
|
|
1989
2228
|
get nodeModel(): FlowNodeModel;
|
|
1990
2229
|
}
|
|
1991
2230
|
declare class BkFlowModelAccessor {
|
|
@@ -2018,6 +2257,15 @@ interface DebugCanvasContext {
|
|
|
2018
2257
|
/** 调试锁定期(running/terminating);节点配置据此展示只读说明 Alert */
|
|
2019
2258
|
isLocked?(): boolean;
|
|
2020
2259
|
}
|
|
2260
|
+
interface SubflowUpdateCanvasContext {
|
|
2261
|
+
/** 节点是否引用了已过期的子流程模板(红点显隐) */
|
|
2262
|
+
isNodeExpired(nodeId: string): boolean;
|
|
2263
|
+
/**
|
|
2264
|
+
* 红点动画的重播序号(每次"查看需要更新的子流程"定位时递增)。
|
|
2265
|
+
* 节点用其作 :key 重挂载红点元素以重新触发 ripple 动画;未实现时返回 0(仅首轮动画)。
|
|
2266
|
+
*/
|
|
2267
|
+
getDotEpoch?(nodeId: string): number;
|
|
2268
|
+
}
|
|
2021
2269
|
|
|
2022
2270
|
type __VLS_Props = {
|
|
2023
2271
|
pipelineTree: PipelineTree;
|
|
@@ -2031,6 +2279,7 @@ type __VLS_Props = {
|
|
|
2031
2279
|
toolbarItems?: CanvasToolbarItem[];
|
|
2032
2280
|
simulateDebugContext?: SimulateDebugCanvasContext;
|
|
2033
2281
|
debugContext?: DebugCanvasContext;
|
|
2282
|
+
subflowUpdateContext?: SubflowUpdateCanvasContext;
|
|
2034
2283
|
};
|
|
2035
2284
|
declare var __VLS_8: {};
|
|
2036
2285
|
declare var __VLS_22: {
|
|
@@ -2171,6 +2420,7 @@ declare function exportToPipelineTree(flowModel: FlowModel): PipelineTree;
|
|
|
2171
2420
|
* - node.remove:主动查找将被级联删除的边,清理对应网关条件;
|
|
2172
2421
|
* 若删除的是分支网关,级联删除关联的 placeholder 节点;
|
|
2173
2422
|
* 同时清理全局变量中对被删除节点的 source_info 引用,并删除已无引用的变量
|
|
2423
|
+
* - node.move / node.set-extensions(parentId):循环容器大小自适应(子节点移动后容器包住内容)
|
|
2174
2424
|
*/
|
|
2175
2425
|
declare function createBkflowPlugin(): CanvasPlugin;
|
|
2176
2426
|
|