weaver-e10-builder 1.6.15 → 1.7.0
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/cli-register.d.ts +8 -1
- package/dist/cli-register.d.ts.map +1 -1
- package/dist/cli-register.js +238 -86
- package/dist/cli-register.js.map +1 -1
- package/dist/commands/actionflow.d.ts +1 -0
- package/dist/commands/actionflow.d.ts.map +1 -1
- package/dist/commands/actionflow.js +17 -1
- package/dist/commands/actionflow.js.map +1 -1
- package/dist/commands/designer-custom-page.d.ts +3 -0
- package/dist/commands/designer-custom-page.d.ts.map +1 -0
- package/dist/commands/designer-custom-page.js +56 -0
- package/dist/commands/designer-custom-page.js.map +1 -0
- package/dist/commands/designer-event.d.ts.map +1 -1
- package/dist/commands/designer-event.js +70 -5
- package/dist/commands/designer-event.js.map +1 -1
- package/dist/commands/designer-list-advanced.d.ts +3 -0
- package/dist/commands/designer-list-advanced.d.ts.map +1 -0
- package/dist/commands/designer-list-advanced.js +53 -0
- package/dist/commands/designer-list-advanced.js.map +1 -0
- package/dist/commands/designer-list-controls.d.ts +3 -0
- package/dist/commands/designer-list-controls.d.ts.map +1 -0
- package/dist/commands/designer-list-controls.js +39 -0
- package/dist/commands/designer-list-controls.js.map +1 -0
- package/dist/commands/designer-permission.d.ts +3 -0
- package/dist/commands/designer-permission.d.ts.map +1 -0
- package/dist/commands/designer-permission.js +32 -0
- package/dist/commands/designer-permission.js.map +1 -0
- package/dist/commands/designer-tabbar.d.ts +3 -0
- package/dist/commands/designer-tabbar.d.ts.map +1 -0
- package/dist/commands/designer-tabbar.js +24 -0
- package/dist/commands/designer-tabbar.js.map +1 -0
- package/dist/commands/ecode.d.ts +9 -0
- package/dist/commands/ecode.d.ts.map +1 -0
- package/dist/commands/ecode.js +81 -0
- package/dist/commands/ecode.js.map +1 -0
- package/dist/commands/form-base-setting.d.ts +3 -0
- package/dist/commands/form-base-setting.d.ts.map +1 -0
- package/dist/commands/form-base-setting.js +192 -0
- package/dist/commands/form-base-setting.js.map +1 -0
- package/dist/commands/form-field-linkage.d.ts +5 -0
- package/dist/commands/form-field-linkage.d.ts.map +1 -1
- package/dist/commands/form-field-linkage.js +82 -16
- package/dist/commands/form-field-linkage.js.map +1 -1
- package/dist/commands/form-list-columns.d.ts.map +1 -1
- package/dist/commands/form-list-columns.js +4 -0
- package/dist/commands/form-list-columns.js.map +1 -1
- package/dist/commands/form-list-config.d.ts.map +1 -1
- package/dist/commands/form-list-config.js +19 -3
- package/dist/commands/form-list-config.js.map +1 -1
- package/dist/commands/form-list-permission.d.ts.map +1 -1
- package/dist/commands/form-list-permission.js +34 -1
- package/dist/commands/form-list-permission.js.map +1 -1
- package/dist/commands/form-obj-meta.d.ts.map +1 -1
- package/dist/commands/form-obj-meta.js +194 -1
- package/dist/commands/form-obj-meta.js.map +1 -1
- package/dist/commands/form-table-view.d.ts.map +1 -1
- package/dist/commands/form-table-view.js +14 -4
- package/dist/commands/form-table-view.js.map +1 -1
- package/dist/commands/matrix-person.d.ts +3 -0
- package/dist/commands/matrix-person.d.ts.map +1 -0
- package/dist/commands/matrix-person.js +95 -0
- package/dist/commands/matrix-person.js.map +1 -0
- package/dist/commands/matrix.d.ts.map +1 -1
- package/dist/commands/matrix.js +3 -1
- package/dist/commands/matrix.js.map +1 -1
- package/dist/commands/page-combination.d.ts.map +1 -1
- package/dist/commands/page-combination.js +15 -0
- package/dist/commands/page-combination.js.map +1 -1
- package/dist/commands/page-management.d.ts +3 -0
- package/dist/commands/page-management.d.ts.map +1 -0
- package/dist/commands/page-management.js +16 -0
- package/dist/commands/page-management.js.map +1 -0
- package/dist/commands/page.d.ts.map +1 -1
- package/dist/commands/page.js +8 -9
- package/dist/commands/page.js.map +1 -1
- package/dist/commands/report-cell.d.ts.map +1 -1
- package/dist/commands/report-cell.js +215 -0
- package/dist/commands/report-cell.js.map +1 -1
- package/dist/commands/report-code.d.ts +9 -0
- package/dist/commands/report-code.d.ts.map +1 -0
- package/dist/commands/report-code.js +105 -0
- package/dist/commands/report-code.js.map +1 -0
- package/dist/commands/report.d.ts.map +1 -1
- package/dist/commands/report.js +70 -17
- package/dist/commands/report.js.map +1 -1
- package/dist/core/client.d.ts +12 -0
- package/dist/core/client.d.ts.map +1 -1
- package/dist/core/client.js +23 -2
- package/dist/core/client.js.map +1 -1
- package/dist/index.js +15 -5
- package/dist/index.js.map +1 -1
- package/dist/services/action-detail.d.ts +2 -0
- package/dist/services/action-detail.d.ts.map +1 -1
- package/dist/services/action-detail.js +11 -5
- package/dist/services/action-detail.js.map +1 -1
- package/dist/services/actionflow/build_workflow_draft.d.ts +1 -1
- package/dist/services/actionflow/build_workflow_draft.d.ts.map +1 -1
- package/dist/services/actionflow/build_workflow_draft.js +28 -24
- package/dist/services/actionflow/build_workflow_draft.js.map +1 -1
- package/dist/services/actionflow/components/action_eb_update_compiler.d.ts.map +1 -1
- package/dist/services/actionflow/components/action_eb_update_compiler.js +2 -15
- package/dist/services/actionflow/components/action_eb_update_compiler.js.map +1 -1
- package/dist/services/actionflow/components/custom_set_form.d.ts.map +1 -1
- package/dist/services/actionflow/components/custom_set_form.js +1 -9
- package/dist/services/actionflow/components/custom_set_form.js.map +1 -1
- package/dist/services/actionflow/components/dml_execute.d.ts.map +1 -1
- package/dist/services/actionflow/components/dml_execute.js +3 -4
- package/dist/services/actionflow/components/dml_execute.js.map +1 -1
- package/dist/services/actionflow/components/document_actions.d.ts.map +1 -1
- package/dist/services/actionflow/components/document_actions.js +0 -3
- package/dist/services/actionflow/components/document_actions.js.map +1 -1
- package/dist/services/actionflow/components/form_data_builder.d.ts.map +1 -1
- package/dist/services/actionflow/components/form_data_builder.js +27 -5
- package/dist/services/actionflow/components/form_data_builder.js.map +1 -1
- package/dist/services/actionflow/components/hrm_actions.d.ts.map +1 -1
- package/dist/services/actionflow/components/hrm_actions.js +1 -3
- package/dist/services/actionflow/components/hrm_actions.js.map +1 -1
- package/dist/services/actionflow/components/index.d.ts +1 -1
- package/dist/services/actionflow/components/index.d.ts.map +1 -1
- package/dist/services/actionflow/components/index.js +1 -1
- package/dist/services/actionflow/components/index.js.map +1 -1
- package/dist/services/actionflow/components/inner_mq_listener.js +1 -1
- package/dist/services/actionflow/components/inner_mq_listener.js.map +1 -1
- package/dist/services/actionflow/components/inner_mq_send.d.ts.map +1 -1
- package/dist/services/actionflow/components/inner_mq_send.js +6 -2
- package/dist/services/actionflow/components/inner_mq_send.js.map +1 -1
- package/dist/services/actionflow/components/multiple_execution.d.ts +1 -2
- package/dist/services/actionflow/components/multiple_execution.d.ts.map +1 -1
- package/dist/services/actionflow/components/multiple_execution.js +55 -276
- package/dist/services/actionflow/components/multiple_execution.js.map +1 -1
- package/dist/services/actionflow/components/output.d.ts.map +1 -1
- package/dist/services/actionflow/components/output.js +3 -7
- package/dist/services/actionflow/components/output.js.map +1 -1
- package/dist/services/actionflow/components/send_message.d.ts.map +1 -1
- package/dist/services/actionflow/components/send_message.js +6 -10
- package/dist/services/actionflow/components/send_message.js.map +1 -1
- package/dist/services/actionflow/components/serverless_action.d.ts.map +1 -1
- package/dist/services/actionflow/components/serverless_action.js +3 -2
- package/dist/services/actionflow/components/serverless_action.js.map +1 -1
- package/dist/services/actionflow/components/workflow_actions.d.ts.map +1 -1
- package/dist/services/actionflow/components/workflow_actions.js +0 -3
- package/dist/services/actionflow/components/workflow_actions.js.map +1 -1
- package/dist/services/actionflow/context_preflight.d.ts.map +1 -1
- package/dist/services/actionflow/context_preflight.js +12 -9
- package/dist/services/actionflow/context_preflight.js.map +1 -1
- package/dist/services/actionflow/filter_rules.js +4 -4
- package/dist/services/actionflow/filter_rules.js.map +1 -1
- package/dist/services/actionflow/formula_service.d.ts +0 -13
- package/dist/services/actionflow/formula_service.d.ts.map +1 -1
- package/dist/services/actionflow/formula_service.js +45 -267
- package/dist/services/actionflow/formula_service.js.map +1 -1
- package/dist/services/actionflow/generation_service.d.ts.map +1 -1
- package/dist/services/actionflow/generation_service.js +10 -12
- package/dist/services/actionflow/generation_service.js.map +1 -1
- package/dist/services/actionflow/id_generator.d.ts +2 -2
- package/dist/services/actionflow/id_generator.d.ts.map +1 -1
- package/dist/services/actionflow/id_generator.js +5 -11
- package/dist/services/actionflow/id_generator.js.map +1 -1
- package/dist/services/actionflow/loop_context.d.ts +12 -0
- package/dist/services/actionflow/loop_context.d.ts.map +1 -0
- package/dist/services/actionflow/loop_context.js +134 -0
- package/dist/services/actionflow/loop_context.js.map +1 -0
- package/dist/services/actionflow/param_group_dto.d.ts +7 -0
- package/dist/services/actionflow/param_group_dto.d.ts.map +1 -1
- package/dist/services/actionflow/param_group_dto.js +128 -16
- package/dist/services/actionflow/param_group_dto.js.map +1 -1
- package/dist/services/actionflow/param_mapping_basis.js +2 -2
- package/dist/services/actionflow/param_mapping_basis.js.map +1 -1
- package/dist/services/actionflow/preflight_service.d.ts +1 -0
- package/dist/services/actionflow/preflight_service.d.ts.map +1 -1
- package/dist/services/actionflow/preflight_service.js +88 -291
- package/dist/services/actionflow/preflight_service.js.map +1 -1
- package/dist/services/actionflow/readback_verifier.d.ts.map +1 -1
- package/dist/services/actionflow/readback_verifier.js +21 -2
- package/dist/services/actionflow/readback_verifier.js.map +1 -1
- package/dist/services/actionflow/save_workflow_draft.d.ts +2 -3
- package/dist/services/actionflow/save_workflow_draft.d.ts.map +1 -1
- package/dist/services/actionflow/save_workflow_draft.js +14 -16
- package/dist/services/actionflow/save_workflow_draft.js.map +1 -1
- package/dist/services/actionflow/update_service.d.ts +5 -0
- package/dist/services/actionflow/update_service.d.ts.map +1 -1
- package/dist/services/actionflow/update_service.js +126 -3
- package/dist/services/actionflow/update_service.js.map +1 -1
- package/dist/services/actionflow/workflow_compiler.d.ts +1 -2
- package/dist/services/actionflow/workflow_compiler.d.ts.map +1 -1
- package/dist/services/actionflow/workflow_compiler.js +79 -105
- package/dist/services/actionflow/workflow_compiler.js.map +1 -1
- package/dist/services/designer-custom-page.d.ts +11 -0
- package/dist/services/designer-custom-page.d.ts.map +1 -0
- package/dist/services/designer-custom-page.js +227 -0
- package/dist/services/designer-custom-page.js.map +1 -0
- package/dist/services/designer-event.d.ts +7 -2
- package/dist/services/designer-event.d.ts.map +1 -1
- package/dist/services/designer-event.js +357 -33
- package/dist/services/designer-event.js.map +1 -1
- package/dist/services/designer-list-advanced.d.ts +9 -0
- package/dist/services/designer-list-advanced.d.ts.map +1 -0
- package/dist/services/designer-list-advanced.js +64 -0
- package/dist/services/designer-list-advanced.js.map +1 -0
- package/dist/services/designer-list-controls.d.ts +2 -0
- package/dist/services/designer-list-controls.d.ts.map +1 -0
- package/dist/services/designer-list-controls.js +85 -0
- package/dist/services/designer-list-controls.js.map +1 -0
- package/dist/services/designer-list-presentation.d.ts +2 -0
- package/dist/services/designer-list-presentation.d.ts.map +1 -0
- package/dist/services/designer-list-presentation.js +45 -0
- package/dist/services/designer-list-presentation.js.map +1 -0
- package/dist/services/designer-list-runtime.d.ts +2 -0
- package/dist/services/designer-list-runtime.d.ts.map +1 -0
- package/dist/services/designer-list-runtime.js +80 -0
- package/dist/services/designer-list-runtime.js.map +1 -0
- package/dist/services/designer-list-search.d.ts +2 -0
- package/dist/services/designer-list-search.d.ts.map +1 -0
- package/dist/services/designer-list-search.js +72 -0
- package/dist/services/designer-list-search.js.map +1 -0
- package/dist/services/designer-permission.d.ts +52 -0
- package/dist/services/designer-permission.d.ts.map +1 -0
- package/dist/services/designer-permission.js +316 -0
- package/dist/services/designer-permission.js.map +1 -0
- package/dist/services/designer-tabbar.d.ts +11 -0
- package/dist/services/designer-tabbar.d.ts.map +1 -0
- package/dist/services/designer-tabbar.js +114 -0
- package/dist/services/designer-tabbar.js.map +1 -0
- package/dist/services/ecode-check.d.ts +50 -0
- package/dist/services/ecode-check.d.ts.map +1 -0
- package/dist/services/ecode-check.js +408 -0
- package/dist/services/ecode-check.js.map +1 -0
- package/dist/services/esb-interface/importer.d.ts +35 -1
- package/dist/services/esb-interface/importer.d.ts.map +1 -1
- package/dist/services/esb-interface/importer.js +77 -1
- package/dist/services/esb-interface/importer.js.map +1 -1
- package/dist/services/form-base-setting.d.ts +88 -0
- package/dist/services/form-base-setting.d.ts.map +1 -0
- package/dist/services/form-base-setting.js +272 -0
- package/dist/services/form-base-setting.js.map +1 -0
- package/dist/services/form-list-columns.d.ts.map +1 -1
- package/dist/services/form-list-columns.js +12 -3
- package/dist/services/form-list-columns.js.map +1 -1
- package/dist/services/form-list-config.d.ts +40 -3
- package/dist/services/form-list-config.d.ts.map +1 -1
- package/dist/services/form-list-config.js +207 -25
- package/dist/services/form-list-config.js.map +1 -1
- package/dist/services/form-list-fields.d.ts.map +1 -1
- package/dist/services/form-list-fields.js +3 -1
- package/dist/services/form-list-fields.js.map +1 -1
- package/dist/services/form-log-setting.d.ts +55 -0
- package/dist/services/form-log-setting.d.ts.map +1 -0
- package/dist/services/form-log-setting.js +108 -0
- package/dist/services/form-log-setting.js.map +1 -0
- package/dist/services/form-obj-lang.d.ts +45 -0
- package/dist/services/form-obj-lang.d.ts.map +1 -0
- package/dist/services/form-obj-lang.js +127 -0
- package/dist/services/form-obj-lang.js.map +1 -0
- package/dist/services/form-obj-meta.d.ts +34 -0
- package/dist/services/form-obj-meta.d.ts.map +1 -1
- package/dist/services/form-obj-meta.js +81 -12
- package/dist/services/form-obj-meta.js.map +1 -1
- package/dist/services/form-table-view.d.ts +8 -2
- package/dist/services/form-table-view.d.ts.map +1 -1
- package/dist/services/form-table-view.js +22 -5
- package/dist/services/form-table-view.js.map +1 -1
- package/dist/services/form-view.d.ts +1 -1
- package/dist/services/form-view.d.ts.map +1 -1
- package/dist/services/form-view.js +38 -13
- package/dist/services/form-view.js.map +1 -1
- package/dist/services/matrix-person.d.ts +37 -0
- package/dist/services/matrix-person.d.ts.map +1 -0
- package/dist/services/matrix-person.js +57 -0
- package/dist/services/matrix-person.js.map +1 -0
- package/dist/services/org-browser.d.ts +32 -0
- package/dist/services/org-browser.d.ts.map +1 -1
- package/dist/services/org-browser.js +90 -12
- package/dist/services/org-browser.js.map +1 -1
- package/dist/services/page-combination.d.ts +1 -1
- package/dist/services/page-combination.d.ts.map +1 -1
- package/dist/services/page-combination.js +43 -10
- package/dist/services/page-combination.js.map +1 -1
- package/dist/services/page-management.d.ts +67 -0
- package/dist/services/page-management.d.ts.map +1 -0
- package/dist/services/page-management.js +166 -0
- package/dist/services/page-management.js.map +1 -0
- package/dist/services/page-permission.d.ts +2 -2
- package/dist/services/page-permission.d.ts.map +1 -1
- package/dist/services/page-permission.js +22 -9
- package/dist/services/page-permission.js.map +1 -1
- package/dist/services/report/cell-transform.d.ts +62 -0
- package/dist/services/report/cell-transform.d.ts.map +1 -0
- package/dist/services/report/cell-transform.js +192 -0
- package/dist/services/report/cell-transform.js.map +1 -0
- package/dist/services/report/code-block.d.ts +45 -0
- package/dist/services/report/code-block.d.ts.map +1 -0
- package/dist/services/report/code-block.js +92 -0
- package/dist/services/report/code-block.js.map +1 -0
- package/dist/services/report/dataset.d.ts +40 -0
- package/dist/services/report/dataset.d.ts.map +1 -1
- package/dist/services/report/dataset.js +171 -1
- package/dist/services/report/dataset.js.map +1 -1
- package/dist/services/report/lifecycle.d.ts.map +1 -1
- package/dist/services/report/lifecycle.js +24 -3
- package/dist/services/report/lifecycle.js.map +1 -1
- package/dist/services/workflow-base-settings.d.ts.map +1 -1
- package/dist/services/workflow-base-settings.js +19 -5
- package/dist/services/workflow-base-settings.js.map +1 -1
- package/ecode-ui/README.md +9 -0
- package/ecode-ui/ui-types.zip +0 -0
- package/ecode-ui/version.json +7 -0
- package/package.json +4 -1
- package/skill-docs/SKILL.md +19 -5
- package/skill-docs/_catalog.md +22 -1
- package/skill-docs/actionflows/SKILL.md +15 -11
- package/skill-docs/actionflows/references/components/database/DMLExecute.md +4 -0
- package/skill-docs/actionflows/references/components/ebuilder/ActionEbAdd.md +1 -1
- package/skill-docs/actionflows/references/components/ebuilder/ActionEbUpdate.md +2 -0
- package/skill-docs/actionflows/references/components/logic/MultipleExecution.md +9 -30
- package/skill-docs/actionflows/references/components/message/InnerMQSend.md +7 -3
- package/skill-docs/actionflows/references/components/serverless/ServerlessAction.md +4 -0
- package/skill-docs/actionflows/references/components/trigger/CustomTrigger.md +6 -6
- package/skill-docs/actionflows/references/components/trigger/InnerMQListener.md +46 -41
- package/skill-docs/actionflows/references/components/trigger/WebHookTrigger.md +4 -0
- package/skill-docs/actionflows/references/dynamic_capability_matrix.md +3 -4
- package/skill-docs/actionflows/references/function_rules.md +5 -1
- package/skill-docs/actionflows/references/trigger_runtime_notes.md +1 -1
- package/skill-docs/assets/factory/factory-custom-page.json +339 -0
- package/skill-docs/references/common/ref-cli-commands.md +34 -5
- package/skill-docs/references/ebuilder-designer/component-permission.md +131 -0
- package/skill-docs/references/ebuilder-designer/events/actions-interaction.md +132 -108
- package/skill-docs/references/ebuilder-designer/events/guide-events.md +112 -57
- package/skill-docs/references/ebuilder-designer/guide-custom-page.md +176 -0
- package/skill-docs/references/ebuilder-designer/guide-designer-components.md +2 -0
- package/skill-docs/references/ebuilder-designer/guide-designer-factory.md +2 -0
- package/skill-docs/references/ebuilder-designer/guide-designer.md +304 -296
- package/skill-docs/references/ebuilder-designer/guide-list.md +339 -0
- package/skill-docs/references/ebuilder-designer/guide-page-combination.md +162 -142
- package/skill-docs/references/ebuilder-designer/guide-page-management.md +90 -0
- package/skill-docs/references/ebuilder-designer/guide-page-permission.md +151 -145
- package/skill-docs/references/ebuilder-designer/guide-tabbar.md +57 -0
- package/skill-docs/references/esb-interface/guide-import.md +38 -34
- package/skill-docs/references/form/guide-create-form.md +13 -0
- package/skill-docs/references/form/guide-form-base-setting.md +78 -0
- package/skill-docs/references/form/guide-form-view.md +77 -13
- package/skill-docs/references/form/guide-list-columns.md +8 -0
- package/skill-docs/references/hrm/guide-matrix.md +16 -0
- package/skill-docs/references/report/cell-transform-guide.md +17 -3
- package/skill-docs/references/report/code-block-guide.md +54 -0
- package/skill-docs/references/report/dataset-sidebar-ops-guide.md +8 -0
- package/skill-docs/references/report/ref-report-commands.md +7 -1
- package/skill-docs/references/report/report-designer-feature-map.md +1 -1
- package/skill-docs/references/report/report-list-page-ops-guide.md +2 -0
|
@@ -10,13 +10,50 @@ import * as logicFlowSource from './logicflow_source.js';
|
|
|
10
10
|
import { completeEbuilder, pickEbuilderBrowserRow } from './ebuilder_source.js';
|
|
11
11
|
import { resolveHttpBindings } from './http_source.js';
|
|
12
12
|
import { registerTargetFormFields, registerTargetDetailFields, registerWorkflowFieldIds, registerWorkflowContextFields, getWorkflowFieldIds, getWorkflowDetailFields, getWorkflowDetailNames, getTargetFormFields, getTargetDetailFields, replaceTargetDataSourceFields, } from './runtime_metadata.js';
|
|
13
|
+
// 循环数据的子字段来自已读取的来源上下文;按父字段 ID 展开,不查询字段名称。
|
|
14
|
+
export function expandLoopContext(step, loopContext) {
|
|
15
|
+
const mode = String(step.params?.cycleMode || '1');
|
|
16
|
+
if (mode !== '3' && mode !== '4')
|
|
17
|
+
return;
|
|
18
|
+
const selected = step.params?.[mode === '3' ? 'detailData' : 'batchDetailData'];
|
|
19
|
+
const resolved = selected?._resolvedContext;
|
|
20
|
+
const sourceRows = resolved?.tableContext?.tableData;
|
|
21
|
+
const selectedId = String(resolved?.fieldId || '');
|
|
22
|
+
const group = Object.values(loopContext).find((entry) => entry?.type === 'context_group' && String(entry.primaryKey) === 'CycleParams');
|
|
23
|
+
if (!selectedId || !Array.isArray(sourceRows) || !group)
|
|
24
|
+
return;
|
|
25
|
+
const rootId = mode === '3' ? '744564088747180033' : '744564088747180034';
|
|
26
|
+
const prefix = mode === '3' ? 'cycle.dataDetail' : 'cycle.dataDetail[]';
|
|
27
|
+
const queue = [{ id: selectedId, key: prefix }];
|
|
28
|
+
const seen = new Set([selectedId]);
|
|
29
|
+
while (queue.length) {
|
|
30
|
+
const parent = queue.shift();
|
|
31
|
+
for (const row of sourceRows) {
|
|
32
|
+
if (String(row?.parentId || '') !== parent.id || !row?.id || seen.has(String(row.id)))
|
|
33
|
+
continue;
|
|
34
|
+
const suffix = String(row.paramKey || '').split('.').pop();
|
|
35
|
+
if (!suffix)
|
|
36
|
+
continue;
|
|
37
|
+
const key = `${parent.key}.${suffix}`;
|
|
38
|
+
const raw = { ...row, paramKey: key, parentId: parent.id === selectedId ? rootId : parent.id };
|
|
39
|
+
const field = { key, paramKey: key, id: String(row.id), label: String(row.showName || row.paramName || suffix), name: String(row.paramName || row.showName || suffix), type: String(row.paramType || 'string'), value: key, group: 'CycleParams', tablePrimaryKey: 'CycleParams', tableName: String(group.name || ''), componentType: 'MultipleExecution', parentName: '', raw };
|
|
40
|
+
loopContext[key] = field;
|
|
41
|
+
loopContext[`CycleParams.${key}`] = field;
|
|
42
|
+
group.fields.push(raw);
|
|
43
|
+
raw.parentName = getParentName1(group.fields, raw.id);
|
|
44
|
+
field.parentName = raw.parentName;
|
|
45
|
+
seen.add(String(row.id));
|
|
46
|
+
queue.push({ id: String(row.id), key });
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
13
50
|
// workflow_id → 目标表单 id(进程缓存)
|
|
14
51
|
const FORM_ID_CACHE = {};
|
|
15
|
-
import { ContextStore, PlatformContextProvider } from './context_provider.js';
|
|
52
|
+
import { ContextStore, PlatformContextProvider, getParentName1 } from './context_provider.js';
|
|
16
53
|
import { hydrateContextReferences, hydrateQueryResultReferences, queryNodeContext, resolveContextGroupRoot, } from './context_preflight.js';
|
|
17
54
|
import { get as getComponent } from './components/index.js';
|
|
18
55
|
import { getStepBranches } from './step_branches.js';
|
|
19
|
-
import { normalizeParamGroupSetting } from './param_group_dto.js';
|
|
56
|
+
import { normalizeParamGroupSetting, normalizeParamSettingBean, normalizeParamMappingBean, prepareNativeParamMapping, paramDtoNeedsAllocation, remapParamInputBasisIds, prepareResultSetParamDtos } from './param_group_dto.js';
|
|
20
57
|
import { genSfId } from './id_generator.js';
|
|
21
58
|
import { OPTION_FIELD_COMPONENT_KEYS } from './option_field_types.js';
|
|
22
59
|
// 表单字段进程缓存
|
|
@@ -1580,9 +1617,7 @@ export function checkSourceReferences(plan, eventContextFields, errors, availabl
|
|
|
1580
1617
|
realKeys.add(pk);
|
|
1581
1618
|
realKeys.add(pk.replace(/\[\]$/, ''));
|
|
1582
1619
|
}
|
|
1583
|
-
}
|
|
1584
|
-
// 循环的 detailData/batchDetailData 可以来自前序 EnquiryForm、HTTP 等动作,
|
|
1585
|
-
// 不只来自触发器。这里使用按拓扑查询后累积的上下文补充来源键;不接受
|
|
1620
|
+
} // 不只来自触发器。这里使用按拓扑查询后累积的上下文补充来源键;不接受
|
|
1586
1621
|
// 计划自行编造的字段,因为 availableContext 只来自平台 getComponentContext。
|
|
1587
1622
|
for (const key of Object.keys(availableContext || {})) {
|
|
1588
1623
|
if (key.startsWith('_source_'))
|
|
@@ -1657,21 +1692,7 @@ export function checkSourceReferences(plan, eventContextFields, errors, availabl
|
|
|
1657
1692
|
if (['ActionEbAdd', 'ActionEbUpdate', 'ActionEbDelete', 'ActionEbRecover', 'ActionEbSaveVersion', 'EbGetDataById'].includes(step.type)) {
|
|
1658
1693
|
if (params && typeof params === 'object') {
|
|
1659
1694
|
const mapping = params.mapping;
|
|
1660
|
-
|
|
1661
|
-
// 循环体字段来自 MultipleExecution 的 CycleParams,不属于最外层
|
|
1662
|
-
// 触发器流程上下文;它由循环节点查询后的 hydrateCurrentLoopReferences
|
|
1663
|
-
// 单独校验和补全,不能再按 workflowId 源字段检查。
|
|
1664
|
-
const topLevelMapping = Object.fromEntries(Object.entries(mapping).filter(([, value]) => {
|
|
1665
|
-
if (!value || typeof value !== 'object' || Array.isArray(value))
|
|
1666
|
-
return true;
|
|
1667
|
-
return String(value.scope ?? value.contextScope ?? '') !== 'current_loop'
|
|
1668
|
-
&& String(value.assignment?.scope ?? value.assignment?.contextScope ?? '') !== 'current_loop';
|
|
1669
|
-
}));
|
|
1670
|
-
checkMapping(topLevelMapping, `${path}.mapping`);
|
|
1671
|
-
}
|
|
1672
|
-
else {
|
|
1673
|
-
checkMapping(mapping, `${path}.mapping`);
|
|
1674
|
-
}
|
|
1695
|
+
checkMapping(mapping, `${path}.mapping`);
|
|
1675
1696
|
const bv = params.basisValue;
|
|
1676
1697
|
if (bv && typeof bv === 'object') {
|
|
1677
1698
|
if (String(bv.kind || bv.assignmentKind || '') !== 'query_result') {
|
|
@@ -1702,15 +1723,6 @@ export function checkSourceReferences(plan, eventContextFields, errors, availabl
|
|
|
1702
1723
|
}
|
|
1703
1724
|
}
|
|
1704
1725
|
}
|
|
1705
|
-
if (step.type === 'MultipleExecution') {
|
|
1706
|
-
for (const fieldName of ['cycleTimes', 'detailData', 'batchDetailData']) {
|
|
1707
|
-
const formula = params?.[fieldName];
|
|
1708
|
-
if (formula && typeof formula === 'object' && ['context', 'reference'].includes(String(formula.kind ?? formula.assignmentKind ?? ''))) {
|
|
1709
|
-
checkSourceKey(String(formula.paramKey || formula.key || formula.fieldKey || ''), `${path}.${fieldName}`);
|
|
1710
|
-
}
|
|
1711
|
-
}
|
|
1712
|
-
walk(step.actions || [], `${path}.actions`);
|
|
1713
|
-
}
|
|
1714
1726
|
if (step.type === 'Condition') {
|
|
1715
1727
|
for (const [bi, branch] of (getStepBranches(step) || []).entries()) {
|
|
1716
1728
|
if (branch && typeof branch === 'object')
|
|
@@ -1721,256 +1733,6 @@ export function checkSourceReferences(plan, eventContextFields, errors, availabl
|
|
|
1721
1733
|
};
|
|
1722
1734
|
walk(plan.actions || []);
|
|
1723
1735
|
}
|
|
1724
|
-
function loopContextDescriptor(field, fallbackComponent = '') {
|
|
1725
|
-
const componentType = String(field?.componentType || field?._context_component_type || fallbackComponent || 'ApproveTrigger');
|
|
1726
|
-
const parameterTable = String(field?.tablePrimaryKey
|
|
1727
|
-
|| field?.tableKey
|
|
1728
|
-
|| field?._context_table_primary_key
|
|
1729
|
-
|| field?.raw?.tablePrimaryKey
|
|
1730
|
-
|| field?.raw?.tableKey
|
|
1731
|
-
|| field?.raw?.primaryKey
|
|
1732
|
-
|| '').trim();
|
|
1733
|
-
const tablePrimaryKey = parameterTable
|
|
1734
|
-
|| (componentType === 'CustomTrigger' ? 'SelectParams' : componentType === 'ApproveTrigger' ? 'ApprovalData' : 'FormData');
|
|
1735
|
-
const tableName = String(field?.tableName || field?.raw?.tableName || field?.raw?.name || (tablePrimaryKey === 'SelectParams'
|
|
1736
|
-
? '选择参数' : tablePrimaryKey === 'ApprovalData' ? '流程数据' : tablePrimaryKey));
|
|
1737
|
-
return {
|
|
1738
|
-
componentType,
|
|
1739
|
-
tablePrimaryKey,
|
|
1740
|
-
tableName,
|
|
1741
|
-
parentName: String(field?.parentName || field?.newParentName || field?.label || field?.showName || field?.paramName || ''),
|
|
1742
|
-
};
|
|
1743
|
-
}
|
|
1744
|
-
function hydrateLoopCycleTimes(plan, eventContextFields) {
|
|
1745
|
-
const byKey = new Map();
|
|
1746
|
-
for (const field of eventContextFields) {
|
|
1747
|
-
if (field && typeof field === 'object' && field.paramKey)
|
|
1748
|
-
byKey.set(String(field.paramKey), field);
|
|
1749
|
-
}
|
|
1750
|
-
const walk = (steps) => {
|
|
1751
|
-
for (const step of steps || []) {
|
|
1752
|
-
if (!step || typeof step !== 'object')
|
|
1753
|
-
continue;
|
|
1754
|
-
if (step.type === 'MultipleExecution') {
|
|
1755
|
-
for (const fieldName of ['cycleTimes', 'detailData', 'batchDetailData']) {
|
|
1756
|
-
const formula = step.params?.[fieldName];
|
|
1757
|
-
const kind = String(formula?.kind ?? formula?.assignmentKind ?? '');
|
|
1758
|
-
if (!formula || typeof formula !== 'object' || !['context', 'reference'].includes(kind))
|
|
1759
|
-
continue;
|
|
1760
|
-
const paramKey = String(formula.paramKey ?? formula.key ?? formula.fieldKey ?? '');
|
|
1761
|
-
const field = byKey.get(paramKey);
|
|
1762
|
-
if (field) {
|
|
1763
|
-
const label = String(field.showName || field.paramName || paramKey);
|
|
1764
|
-
const workflowId = String(plan.event?.params?.workflowPath?.id || '');
|
|
1765
|
-
formula.paramKey = String(field.paramKey);
|
|
1766
|
-
formula.label = label;
|
|
1767
|
-
formula.valueType = String(field.paramType || field.fieldType || 'string');
|
|
1768
|
-
formula.fieldType = String(field.paramType || field.fieldType || 'string');
|
|
1769
|
-
const descriptor = loopContextDescriptor(field);
|
|
1770
|
-
formula._resolvedContext = {
|
|
1771
|
-
fieldId: String(field.id || field.paramId || ''),
|
|
1772
|
-
fieldType: String(field.paramType || field.fieldType || 'string'),
|
|
1773
|
-
label,
|
|
1774
|
-
componentType: descriptor.componentType,
|
|
1775
|
-
tablePrimaryKey: descriptor.tablePrimaryKey,
|
|
1776
|
-
tableName: descriptor.tableName,
|
|
1777
|
-
parentName: descriptor.parentName || (workflowId ? `${workflowId}.${label}` : label),
|
|
1778
|
-
rawField: { ...field },
|
|
1779
|
-
};
|
|
1780
|
-
}
|
|
1781
|
-
}
|
|
1782
|
-
walk(step.actions || []);
|
|
1783
|
-
}
|
|
1784
|
-
if (step.type === 'Condition')
|
|
1785
|
-
for (const branch of getStepBranches(step) || [])
|
|
1786
|
-
walk(branch?.actions || []);
|
|
1787
|
-
}
|
|
1788
|
-
};
|
|
1789
|
-
walk(plan.actions || []);
|
|
1790
|
-
}
|
|
1791
|
-
/**
|
|
1792
|
-
* 循环体里的 scope=current_loop 引用必须使用循环节点 getComponentContext 返回的
|
|
1793
|
-
* CycleParams 元数据。这里补 fieldId/类型/名称,供 FormulaBean 的 frontId 和
|
|
1794
|
-
* 配置字段直接复用;不将它误识别成流程表单 FormData。
|
|
1795
|
-
*/
|
|
1796
|
-
function hydrateCurrentLoopReferences(steps, context, loopRef) {
|
|
1797
|
-
const walkValue = (value) => {
|
|
1798
|
-
if (Array.isArray(value)) {
|
|
1799
|
-
for (const item of value)
|
|
1800
|
-
walkValue(item);
|
|
1801
|
-
return;
|
|
1802
|
-
}
|
|
1803
|
-
if (!value || typeof value !== 'object')
|
|
1804
|
-
return;
|
|
1805
|
-
if (value.type === 'MultipleExecution') {
|
|
1806
|
-
walkValue(value.params || {});
|
|
1807
|
-
return;
|
|
1808
|
-
}
|
|
1809
|
-
if (String(value.scope ?? value.contextScope ?? '') === 'current_loop') {
|
|
1810
|
-
const paramKey = String(value.paramKey ?? value.key ?? value.fieldKey ?? '');
|
|
1811
|
-
const field = context[paramKey];
|
|
1812
|
-
if (field && typeof field === 'object') {
|
|
1813
|
-
const raw = field.raw && typeof field.raw === 'object' ? field.raw : {};
|
|
1814
|
-
const label = String(field.label ?? raw.showName ?? raw.paramName ?? paramKey);
|
|
1815
|
-
const fieldType = String(field.type ?? raw.paramType ?? 'int');
|
|
1816
|
-
value.paramKey = paramKey;
|
|
1817
|
-
value.label = label;
|
|
1818
|
-
value.valueType = fieldType;
|
|
1819
|
-
value.fieldType = fieldType;
|
|
1820
|
-
value.source = loopRef;
|
|
1821
|
-
value.comId = loopRef;
|
|
1822
|
-
value._resolvedContext = {
|
|
1823
|
-
fieldId: String(raw.id ?? raw.paramId ?? value.frontId ?? paramKey),
|
|
1824
|
-
fieldType,
|
|
1825
|
-
label,
|
|
1826
|
-
componentType: 'MultipleExecution',
|
|
1827
|
-
comId: loopRef,
|
|
1828
|
-
tablePrimaryKey: 'CycleParams',
|
|
1829
|
-
tableName: '循环参数',
|
|
1830
|
-
parentName: `循环.${label}`,
|
|
1831
|
-
sourceComponentType: String(raw.sourceComponentType || ''),
|
|
1832
|
-
sourceTablePrimaryKey: String(raw.sourceTablePrimaryKey || ''),
|
|
1833
|
-
sourceTableName: String(raw.sourceTableName || ''),
|
|
1834
|
-
sourceParamKey: String(raw.sourceParamKey || ''),
|
|
1835
|
-
sourceComponentId: String(raw.sourceComponentId || ''),
|
|
1836
|
-
rawField: raw,
|
|
1837
|
-
};
|
|
1838
|
-
}
|
|
1839
|
-
}
|
|
1840
|
-
for (const child of Object.values(value))
|
|
1841
|
-
walkValue(child);
|
|
1842
|
-
};
|
|
1843
|
-
for (const step of steps || [])
|
|
1844
|
-
walkValue(step?.params || {});
|
|
1845
|
-
}
|
|
1846
|
-
/** 循环自身的列表来源也要回填实时字段 DTO,不能只保留语义上的 paramKey。 */
|
|
1847
|
-
function hydrateLoopSourceReferences(step, context) {
|
|
1848
|
-
if (!step || step.type !== 'MultipleExecution')
|
|
1849
|
-
return;
|
|
1850
|
-
for (const fieldName of ['cycleTimes', 'detailData', 'batchDetailData']) {
|
|
1851
|
-
const ref = step.params?.[fieldName];
|
|
1852
|
-
const kind = String(ref?.kind ?? ref?.assignmentKind ?? '');
|
|
1853
|
-
if (!ref || typeof ref !== 'object' || !['context', 'reference'].includes(kind))
|
|
1854
|
-
continue;
|
|
1855
|
-
const paramKey = String(ref.paramKey ?? ref.key ?? ref.fieldKey ?? '');
|
|
1856
|
-
const field = context[paramKey];
|
|
1857
|
-
if (!field || typeof field !== 'object')
|
|
1858
|
-
continue;
|
|
1859
|
-
const raw = field.raw && typeof field.raw === 'object' ? field.raw : field;
|
|
1860
|
-
const label = String(field.label ?? raw.showName ?? raw.paramName ?? paramKey);
|
|
1861
|
-
const sourceGroup = field.type === 'context_group'
|
|
1862
|
-
? field
|
|
1863
|
-
: field.group ? context[String(field.group)] : null;
|
|
1864
|
-
const componentType = String(raw.sourceComponentType
|
|
1865
|
-
|| field.componentType
|
|
1866
|
-
|| field.component
|
|
1867
|
-
|| sourceGroup?.component
|
|
1868
|
-
|| raw.componentType
|
|
1869
|
-
|| (/\[\]$/.test(paramKey) ? 'EnquiryForm' : 'ApproveTrigger'));
|
|
1870
|
-
const descriptor = loopContextDescriptor(field, componentType);
|
|
1871
|
-
const tablePrimaryKey = descriptor.tablePrimaryKey;
|
|
1872
|
-
const tableName = descriptor.tableName;
|
|
1873
|
-
ref.paramKey = paramKey;
|
|
1874
|
-
ref.label = label;
|
|
1875
|
-
ref.valueType = String(field.type ?? raw.paramType ?? ref.valueType ?? 'json');
|
|
1876
|
-
ref.fieldType = String(field.type ?? raw.paramType ?? ref.fieldType ?? 'json');
|
|
1877
|
-
ref._resolvedContext = {
|
|
1878
|
-
fieldId: String(raw.id ?? raw.paramId ?? ref.frontId ?? paramKey),
|
|
1879
|
-
fieldType: ref.fieldType,
|
|
1880
|
-
label,
|
|
1881
|
-
componentType,
|
|
1882
|
-
tablePrimaryKey,
|
|
1883
|
-
tableName,
|
|
1884
|
-
parentName: descriptor.parentName || String(field.group || '').replace(/\.$/, '') || label,
|
|
1885
|
-
rawField: { ...raw },
|
|
1886
|
-
};
|
|
1887
|
-
}
|
|
1888
|
-
}
|
|
1889
|
-
/**
|
|
1890
|
-
* 对齐设计器 MultipleExecution.getRequest:把列表来源的字段展开到
|
|
1891
|
-
* cycle.dataDetail(逐条)或 cycle.dataDetail[](分批)下面。
|
|
1892
|
-
* 仅复制上游 getComponentContext 已返回的字段元数据,不猜字段 ID。
|
|
1893
|
-
*/
|
|
1894
|
-
function expandLoopDataContext(step, store) {
|
|
1895
|
-
if (!step || step.type !== 'MultipleExecution')
|
|
1896
|
-
return;
|
|
1897
|
-
const mode = String(step.params?.cycleMode ?? '1');
|
|
1898
|
-
if (!['3', '4'].includes(mode))
|
|
1899
|
-
return;
|
|
1900
|
-
const ref = step.params?.[mode === '4' ? 'batchDetailData' : 'detailData'];
|
|
1901
|
-
if (!ref || typeof ref !== 'object')
|
|
1902
|
-
return;
|
|
1903
|
-
const sourceKey = String(ref.paramKey ?? ref.key ?? ref.fieldKey ?? '');
|
|
1904
|
-
const context = store.asDict();
|
|
1905
|
-
const source = context[sourceKey];
|
|
1906
|
-
let sourceFields = source && typeof source === 'object' && Array.isArray(source.fields) ? source.fields : [];
|
|
1907
|
-
if (!sourceFields.length) {
|
|
1908
|
-
// EnquiryForm 返回的列表根字段通常和所有字段一起挂在 FormData.fields,
|
|
1909
|
-
// 根键本身只是一个普通字段对象,不带 fields 数组。
|
|
1910
|
-
for (const group of Object.values(context)) {
|
|
1911
|
-
if (!group || typeof group !== 'object' || !Array.isArray(group.fields))
|
|
1912
|
-
continue;
|
|
1913
|
-
if (group.fields.some((field) => String(field?.paramKey || '') === sourceKey)) {
|
|
1914
|
-
sourceFields = group.fields;
|
|
1915
|
-
break;
|
|
1916
|
-
}
|
|
1917
|
-
}
|
|
1918
|
-
}
|
|
1919
|
-
if (!sourceFields.length)
|
|
1920
|
-
return;
|
|
1921
|
-
const sourceGroup = source && source.type === 'context_group'
|
|
1922
|
-
? source
|
|
1923
|
-
: source?.group ? context[String(source.group)] : null;
|
|
1924
|
-
const sourceComponentType = String(ref._resolvedContext?.componentType
|
|
1925
|
-
|| ref.componentType
|
|
1926
|
-
|| source?.componentType
|
|
1927
|
-
|| source?.component
|
|
1928
|
-
|| sourceGroup?.component
|
|
1929
|
-
|| source?.raw?.sourceComponentType
|
|
1930
|
-
|| (/\[\]$/.test(sourceKey) ? 'EnquiryForm' : 'ApproveTrigger'));
|
|
1931
|
-
const sourceDescriptor = loopContextDescriptor(source || {}, sourceComponentType);
|
|
1932
|
-
const sourceTablePrimaryKey = sourceDescriptor.tablePrimaryKey;
|
|
1933
|
-
const sourceTableName = sourceDescriptor.tableName;
|
|
1934
|
-
const prefix = mode === '4' ? 'cycle.dataDetail[]' : 'cycle.dataDetail';
|
|
1935
|
-
const expanded = {};
|
|
1936
|
-
for (const rawField of sourceFields) {
|
|
1937
|
-
if (!rawField || typeof rawField !== 'object')
|
|
1938
|
-
continue;
|
|
1939
|
-
const rawKey = String(rawField.paramKey || '');
|
|
1940
|
-
if (!rawKey.startsWith(sourceKey))
|
|
1941
|
-
continue;
|
|
1942
|
-
const suffix = rawKey.slice(sourceKey.length);
|
|
1943
|
-
if (!suffix.startsWith('.'))
|
|
1944
|
-
continue;
|
|
1945
|
-
const key = `${prefix}${suffix}`;
|
|
1946
|
-
const field = {
|
|
1947
|
-
...rawField,
|
|
1948
|
-
paramKey: key,
|
|
1949
|
-
value: key,
|
|
1950
|
-
group: 'CycleParams',
|
|
1951
|
-
parentId: String(rawField.parentId || ''),
|
|
1952
|
-
// 循环体里的业务字段最终不是 CycleParams 引用,而是上游列表
|
|
1953
|
-
// 的 FormData[位置].字段。保留来源元数据供 FormulaBean 编译使用。
|
|
1954
|
-
sourceParamKey: rawKey,
|
|
1955
|
-
sourceComponentId: String(ref.source ?? ref.comId ?? ''),
|
|
1956
|
-
sourceComponentType,
|
|
1957
|
-
sourceTablePrimaryKey,
|
|
1958
|
-
sourceTableName,
|
|
1959
|
-
};
|
|
1960
|
-
expanded[key] = {
|
|
1961
|
-
key,
|
|
1962
|
-
label: String(rawField.showName || rawField.paramName || suffix.slice(1)),
|
|
1963
|
-
name: String(rawField.paramName || rawField.showName || suffix.slice(1)),
|
|
1964
|
-
type: String(rawField.paramType || rawField.fieldType || 'string'),
|
|
1965
|
-
value: key,
|
|
1966
|
-
group: 'CycleParams',
|
|
1967
|
-
description: String(rawField.description || ''),
|
|
1968
|
-
raw: field,
|
|
1969
|
-
};
|
|
1970
|
-
}
|
|
1971
|
-
if (Object.keys(expanded).length)
|
|
1972
|
-
store.merge(expanded, 'MultipleExecution');
|
|
1973
|
-
}
|
|
1974
1736
|
/**
|
|
1975
1737
|
* 显式 mapping 必须带实时显示名和完整上下文。
|
|
1976
1738
|
*
|
|
@@ -2226,8 +1988,6 @@ export function hydrateWorkflowProvenanceMappings(plan, eventContextFields) {
|
|
|
2226
1988
|
if (step.type === 'Condition')
|
|
2227
1989
|
for (const [bi, branch] of (getStepBranches(step) || []).entries())
|
|
2228
1990
|
walk(branch?.actions || [], `${path}[${index}].branches[${bi}].actions`);
|
|
2229
|
-
if (step.type === 'MultipleExecution')
|
|
2230
|
-
walk(step.actions || [], `${path}[${index}].actions`);
|
|
2231
1991
|
}
|
|
2232
1992
|
};
|
|
2233
1993
|
walk(plan.actions || [], 'actions');
|
|
@@ -2288,6 +2048,9 @@ export function syncQueryFieldsToDraft(draft, plan) {
|
|
|
2288
2048
|
for (let j = 0; j < pa.length && j < da.length; j++)
|
|
2289
2049
|
syncStep(pa[j], da[j]);
|
|
2290
2050
|
}
|
|
2051
|
+
const pa = planStep.actions || [], da = draftStep.actions || [];
|
|
2052
|
+
for (let i = 0; i < pa.length && i < da.length; i++)
|
|
2053
|
+
syncStep(pa[i], da[i]);
|
|
2291
2054
|
};
|
|
2292
2055
|
syncStep(plan.event, draft.event);
|
|
2293
2056
|
const pa = plan.actions || [], da = draft.actions || [];
|
|
@@ -3040,8 +2803,8 @@ export async function preflightContext(plan, appId, client) {
|
|
|
3040
2803
|
await hydrateFilterFields(branch.actions || [], formConditionOnly);
|
|
3041
2804
|
}
|
|
3042
2805
|
}
|
|
3043
|
-
if (step.type === 'MultipleExecution'
|
|
3044
|
-
await hydrateFilterFields(step.actions,
|
|
2806
|
+
if (step.type === 'MultipleExecution')
|
|
2807
|
+
await hydrateFilterFields(step.actions || [], formConditionOnly);
|
|
3045
2808
|
}
|
|
3046
2809
|
};
|
|
3047
2810
|
await hydrateFilterFields([event]);
|
|
@@ -3134,6 +2897,9 @@ export async function preflightContext(plan, appId, client) {
|
|
|
3134
2897
|
event.params.request = normalizeParamGroupSetting(request);
|
|
3135
2898
|
}
|
|
3136
2899
|
}
|
|
2900
|
+
if (String(event?.type || '') === 'InnerMQListener' && event?.params?.receiveParams) {
|
|
2901
|
+
event.params.receiveParams = normalizeParamSettingBean(event.params.receiveParams);
|
|
2902
|
+
}
|
|
3137
2903
|
const eventResult = await queryNodeContext(event, appId, 'event_1', store, provider, 'event', { allowPlannedDynamicResources, strictComponentContext: true });
|
|
3138
2904
|
errors.push(...eventResult.errors);
|
|
3139
2905
|
eventContext = eventResult.context;
|
|
@@ -3272,7 +3038,6 @@ export async function preflightContext(plan, appId, client) {
|
|
|
3272
3038
|
// 显式 mapping 补实时显示名
|
|
3273
3039
|
hydrateMappingLabels(plan, eventContextFields, eventContext);
|
|
3274
3040
|
hydrateWorkflowProvenanceMappings(plan, eventContextFields);
|
|
3275
|
-
hydrateLoopCycleTimes(plan, eventContextFields);
|
|
3276
3041
|
// finalOutput 不属于 actions,但其 CustFormDetailDto.formulaValue 也可能
|
|
3277
3042
|
// 引用 CustomTrigger 的表/字段;提前回填 DTO 真实 id,供终止节点编译 FormulaBean。
|
|
3278
3043
|
if (plan.finalOutput?.params && typeof plan.finalOutput.params === 'object') {
|
|
@@ -3297,6 +3062,32 @@ export async function preflightContext(plan, appId, client) {
|
|
|
3297
3062
|
continue;
|
|
3298
3063
|
}
|
|
3299
3064
|
const path = `${prefix}[${index}]`;
|
|
3065
|
+
// 参数 ID 必须在首次 getComponentContext 前生成并写回计划,避免
|
|
3066
|
+
// 预检和最终编译各自生成一套雪花 ID,导致后续 frontId 指向旧参数行。
|
|
3067
|
+
try {
|
|
3068
|
+
const params = step.params || {};
|
|
3069
|
+
if (step.type === 'ServerlessAction') {
|
|
3070
|
+
if (params.request) {
|
|
3071
|
+
const original = params.request;
|
|
3072
|
+
params.request = normalizeParamMappingBean(original);
|
|
3073
|
+
params.inputParams = remapParamInputBasisIds(original, params.request, params.inputParams);
|
|
3074
|
+
}
|
|
3075
|
+
if (params.response)
|
|
3076
|
+
params.response = normalizeParamSettingBean(params.response);
|
|
3077
|
+
}
|
|
3078
|
+
else if (step.type === 'InnerMQSend' && paramDtoNeedsAllocation(params.sendParams, true)) {
|
|
3079
|
+
const original = params.sendParams;
|
|
3080
|
+
params.sendParams = prepareNativeParamMapping(original);
|
|
3081
|
+
params.inputParams = remapParamInputBasisIds(original, params.sendParams, params.inputParams);
|
|
3082
|
+
}
|
|
3083
|
+
else if (step.type === 'DMLExecute' && Array.isArray(params.resultSets)) {
|
|
3084
|
+
params.resultSets = prepareResultSetParamDtos(params.resultSets);
|
|
3085
|
+
}
|
|
3086
|
+
}
|
|
3087
|
+
catch (error) {
|
|
3088
|
+
errors.push(`${path}: ${String(error?.message || error)}`);
|
|
3089
|
+
return;
|
|
3090
|
+
}
|
|
3300
3091
|
let result;
|
|
3301
3092
|
try {
|
|
3302
3093
|
result = await queryNodeContext(step, appId, 'event_1', branchStore, provider, path, { allowPlannedDynamicResources, strictComponentContext: true });
|
|
@@ -3334,12 +3125,18 @@ export async function preflightContext(plan, appId, client) {
|
|
|
3334
3125
|
}
|
|
3335
3126
|
}
|
|
3336
3127
|
else if (step.type === 'MultipleExecution') {
|
|
3337
|
-
|
|
3338
|
-
|
|
3339
|
-
|
|
3340
|
-
|
|
3341
|
-
|
|
3342
|
-
|
|
3128
|
+
const children = Array.isArray(step.actions) ? step.actions : [];
|
|
3129
|
+
if (!children.length) {
|
|
3130
|
+
errors.push(`${path}.actions 循环体不能为空`);
|
|
3131
|
+
return;
|
|
3132
|
+
}
|
|
3133
|
+
const counter = result.context['cycle.hasCycled'] || result.context['CycleParams.cycle.hasCycled'];
|
|
3134
|
+
if (counter?.raw?.id || counter?.id)
|
|
3135
|
+
step._loopCounter = { id: String(counter.raw?.id || counter.id), paramKey: 'cycle.hasCycled', name: '已循环次数' };
|
|
3136
|
+
expandLoopContext(step, result.context);
|
|
3137
|
+
branchStore.merge(result.context, 'MultipleExecution');
|
|
3138
|
+
hydrateContextReferences(children, result.context, { id: sourceRef, type: 'MultipleExecution' });
|
|
3139
|
+
await walk(children, new ContextStore(branchStore.asDict()), `${path}.actions`);
|
|
3343
3140
|
}
|
|
3344
3141
|
else if (['ApproveCreate', 'ApproveSave', 'ApproveCommit', 'ApproveSendBack'].includes(String(step.type))) {
|
|
3345
3142
|
await resolveBizCreateFields(step, plan, client, errors, path);
|
|
@@ -3349,7 +3146,7 @@ export async function preflightContext(plan, appId, client) {
|
|
|
3349
3146
|
await walk(plan.actions || [], store, 'actions');
|
|
3350
3147
|
// 目标表单字段元数据在上面的 walk 中已完成(ApproveCreate 也会在此处
|
|
3351
3148
|
// 拉取 _bizFields),现在统一处理所有 componentKey 对应的固定 Browser 值。
|
|
3352
|
-
//
|
|
3149
|
+
// 动态赋值和函数由公式编译链继续处理,不在这里查询。
|
|
3353
3150
|
try {
|
|
3354
3151
|
await resolveFormFieldBrowserFixedValues(plan, client);
|
|
3355
3152
|
}
|