weaver-e10-builder 1.5.11 → 1.5.13

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.
Files changed (212) hide show
  1. package/README.md +212 -189
  2. package/assets/image-style-observation.schema.json +1355 -0
  3. package/assets/layout-spec.schema.json +52 -0
  4. package/dist/commands/designer-common.d.ts.map +1 -1
  5. package/dist/commands/designer-common.js +91 -0
  6. package/dist/commands/designer-common.js.map +1 -1
  7. package/dist/commands/form-add-detail-table.d.ts.map +1 -1
  8. package/dist/commands/form-add-detail-table.js +97 -1
  9. package/dist/commands/form-add-detail-table.js.map +1 -1
  10. package/dist/commands/form-field-linkage.d.ts +55 -0
  11. package/dist/commands/form-field-linkage.d.ts.map +1 -1
  12. package/dist/commands/form-field-linkage.js +1026 -12
  13. package/dist/commands/form-field-linkage.js.map +1 -1
  14. package/dist/commands/form-formula-linkage.d.ts +36 -0
  15. package/dist/commands/form-formula-linkage.d.ts.map +1 -1
  16. package/dist/commands/form-formula-linkage.js +107 -7
  17. package/dist/commands/form-formula-linkage.js.map +1 -1
  18. package/dist/commands/form-formula.d.ts.map +1 -1
  19. package/dist/commands/form-formula.js +21 -4
  20. package/dist/commands/form-formula.js.map +1 -1
  21. package/dist/commands/form-layout-restore.d.ts +3 -0
  22. package/dist/commands/form-layout-restore.d.ts.map +1 -0
  23. package/dist/commands/form-layout-restore.js +217 -0
  24. package/dist/commands/form-layout-restore.js.map +1 -0
  25. package/dist/commands/form-layout.d.ts.map +1 -1
  26. package/dist/commands/form-layout.js +11 -1
  27. package/dist/commands/form-layout.js.map +1 -1
  28. package/dist/commands/form-obj-meta.d.ts +12 -0
  29. package/dist/commands/form-obj-meta.d.ts.map +1 -0
  30. package/dist/commands/form-obj-meta.js +116 -0
  31. package/dist/commands/form-obj-meta.js.map +1 -0
  32. package/dist/commands/form-validate.d.ts.map +1 -1
  33. package/dist/commands/form-validate.js +167 -35
  34. package/dist/commands/form-validate.js.map +1 -1
  35. package/dist/commands/form.d.ts.map +1 -1
  36. package/dist/commands/form.js +359 -27
  37. package/dist/commands/form.js.map +1 -1
  38. package/dist/commands/menu.d.ts.map +1 -1
  39. package/dist/commands/menu.js +5 -3
  40. package/dist/commands/menu.js.map +1 -1
  41. package/dist/commands/wf-form.d.ts.map +1 -1
  42. package/dist/commands/wf-form.js +215 -13
  43. package/dist/commands/wf-form.js.map +1 -1
  44. package/dist/commands/workflow.d.ts.map +1 -1
  45. package/dist/commands/workflow.js +18 -4
  46. package/dist/commands/workflow.js.map +1 -1
  47. package/dist/core/client.d.ts +2 -1
  48. package/dist/core/client.d.ts.map +1 -1
  49. package/dist/core/client.js +4 -2
  50. package/dist/core/client.js.map +1 -1
  51. package/dist/index.js +2 -0
  52. package/dist/index.js.map +1 -1
  53. package/dist/services/actionflow/calendar_mapper.d.ts.map +1 -1
  54. package/dist/services/actionflow/calendar_mapper.js +34 -14
  55. package/dist/services/actionflow/calendar_mapper.js.map +1 -1
  56. package/dist/services/actionflow/components/document_actions.d.ts.map +1 -1
  57. package/dist/services/actionflow/components/document_actions.js +113 -4
  58. package/dist/services/actionflow/components/document_actions.js.map +1 -1
  59. package/dist/services/actionflow/components/eb_get_data_by_id.d.ts.map +1 -1
  60. package/dist/services/actionflow/components/eb_get_data_by_id.js +18 -1
  61. package/dist/services/actionflow/components/eb_get_data_by_id.js.map +1 -1
  62. package/dist/services/actionflow/components/index.d.ts.map +1 -1
  63. package/dist/services/actionflow/components/index.js +2 -1
  64. package/dist/services/actionflow/components/index.js.map +1 -1
  65. package/dist/services/actionflow/components/schedule_create.d.ts.map +1 -1
  66. package/dist/services/actionflow/components/schedule_create.js +22 -6
  67. package/dist/services/actionflow/components/schedule_create.js.map +1 -1
  68. package/dist/services/actionflow/components/workflow_actions.d.ts +1 -0
  69. package/dist/services/actionflow/components/workflow_actions.d.ts.map +1 -1
  70. package/dist/services/actionflow/components/workflow_actions.js +31 -6
  71. package/dist/services/actionflow/components/workflow_actions.js.map +1 -1
  72. package/dist/services/actionflow/context_preflight.d.ts +5 -0
  73. package/dist/services/actionflow/context_preflight.d.ts.map +1 -1
  74. package/dist/services/actionflow/context_preflight.js +88 -34
  75. package/dist/services/actionflow/context_preflight.js.map +1 -1
  76. package/dist/services/actionflow/document_source.d.ts +5 -0
  77. package/dist/services/actionflow/document_source.d.ts.map +1 -1
  78. package/dist/services/actionflow/document_source.js +16 -0
  79. package/dist/services/actionflow/document_source.js.map +1 -1
  80. package/dist/services/actionflow/filter_rules.d.ts.map +1 -1
  81. package/dist/services/actionflow/filter_rules.js +9 -8
  82. package/dist/services/actionflow/filter_rules.js.map +1 -1
  83. package/dist/services/actionflow/formula_service.d.ts +2 -1
  84. package/dist/services/actionflow/formula_service.d.ts.map +1 -1
  85. package/dist/services/actionflow/formula_service.js +52 -22
  86. package/dist/services/actionflow/formula_service.js.map +1 -1
  87. package/dist/services/actionflow/preflight_service.d.ts +5 -0
  88. package/dist/services/actionflow/preflight_service.d.ts.map +1 -1
  89. package/dist/services/actionflow/preflight_service.js +128 -3
  90. package/dist/services/actionflow/preflight_service.js.map +1 -1
  91. package/dist/services/actionflow/save_workflow_draft.d.ts +7 -0
  92. package/dist/services/actionflow/save_workflow_draft.d.ts.map +1 -1
  93. package/dist/services/actionflow/save_workflow_draft.js +1 -1
  94. package/dist/services/actionflow/save_workflow_draft.js.map +1 -1
  95. package/dist/services/actionflow/workflow_compiler.d.ts.map +1 -1
  96. package/dist/services/actionflow/workflow_compiler.js +51 -13
  97. package/dist/services/actionflow/workflow_compiler.js.map +1 -1
  98. package/dist/services/form-formula-linkage.d.ts +4 -0
  99. package/dist/services/form-formula-linkage.d.ts.map +1 -1
  100. package/dist/services/form-formula-linkage.js +3 -1
  101. package/dist/services/form-formula-linkage.js.map +1 -1
  102. package/dist/services/form-layout-io.d.ts +18 -0
  103. package/dist/services/form-layout-io.d.ts.map +1 -0
  104. package/dist/services/form-layout-io.js +89 -0
  105. package/dist/services/form-layout-io.js.map +1 -0
  106. package/dist/services/form-layout-source/artifact.d.ts +8 -0
  107. package/dist/services/form-layout-source/artifact.d.ts.map +1 -0
  108. package/dist/services/form-layout-source/artifact.js +52 -0
  109. package/dist/services/form-layout-source/artifact.js.map +1 -0
  110. package/dist/services/form-layout-source/binding.d.ts +10 -0
  111. package/dist/services/form-layout-source/binding.d.ts.map +1 -0
  112. package/dist/services/form-layout-source/binding.js +43 -0
  113. package/dist/services/form-layout-source/binding.js.map +1 -0
  114. package/dist/services/form-layout-source/compile.d.ts +7 -0
  115. package/dist/services/form-layout-source/compile.d.ts.map +1 -0
  116. package/dist/services/form-layout-source/compile.js +262 -0
  117. package/dist/services/form-layout-source/compile.js.map +1 -0
  118. package/dist/services/form-layout-source/creation.d.ts +18 -0
  119. package/dist/services/form-layout-source/creation.d.ts.map +1 -0
  120. package/dist/services/form-layout-source/creation.js +42 -0
  121. package/dist/services/form-layout-source/creation.js.map +1 -0
  122. package/dist/services/form-layout-source/excel-extractor.d.ts +7 -0
  123. package/dist/services/form-layout-source/excel-extractor.d.ts.map +1 -0
  124. package/dist/services/form-layout-source/excel-extractor.js +342 -0
  125. package/dist/services/form-layout-source/excel-extractor.js.map +1 -0
  126. package/dist/services/form-layout-source/image-border.d.ts +9 -0
  127. package/dist/services/form-layout-source/image-border.d.ts.map +1 -0
  128. package/dist/services/form-layout-source/image-border.js +128 -0
  129. package/dist/services/form-layout-source/image-border.js.map +1 -0
  130. package/dist/services/form-layout-source/image-observation.d.ts +14 -0
  131. package/dist/services/form-layout-source/image-observation.d.ts.map +1 -0
  132. package/dist/services/form-layout-source/image-observation.js +90 -0
  133. package/dist/services/form-layout-source/image-observation.js.map +1 -0
  134. package/dist/services/form-layout-source/image-review.d.ts +32 -0
  135. package/dist/services/form-layout-source/image-review.d.ts.map +1 -0
  136. package/dist/services/form-layout-source/image-review.js +266 -0
  137. package/dist/services/form-layout-source/image-review.js.map +1 -0
  138. package/dist/services/form-layout-source/image-style.d.ts +16 -0
  139. package/dist/services/form-layout-source/image-style.d.ts.map +1 -0
  140. package/dist/services/form-layout-source/image-style.js +539 -0
  141. package/dist/services/form-layout-source/image-style.js.map +1 -0
  142. package/dist/services/form-layout-source/json.d.ts +3 -0
  143. package/dist/services/form-layout-source/json.d.ts.map +1 -0
  144. package/dist/services/form-layout-source/json.js +33 -0
  145. package/dist/services/form-layout-source/json.js.map +1 -0
  146. package/dist/services/form-layout-source/presentation.d.ts +23 -0
  147. package/dist/services/form-layout-source/presentation.d.ts.map +1 -0
  148. package/dist/services/form-layout-source/presentation.js +174 -0
  149. package/dist/services/form-layout-source/presentation.js.map +1 -0
  150. package/dist/services/form-layout-source/preview.d.ts +4 -0
  151. package/dist/services/form-layout-source/preview.d.ts.map +1 -0
  152. package/dist/services/form-layout-source/preview.js +49 -0
  153. package/dist/services/form-layout-source/preview.js.map +1 -0
  154. package/dist/services/form-layout-source/schema.d.ts +20 -0
  155. package/dist/services/form-layout-source/schema.d.ts.map +1 -0
  156. package/dist/services/form-layout-source/schema.js +149 -0
  157. package/dist/services/form-layout-source/schema.js.map +1 -0
  158. package/dist/services/form-layout-source/source-grid.d.ts +8 -0
  159. package/dist/services/form-layout-source/source-grid.d.ts.map +1 -0
  160. package/dist/services/form-layout-source/source-grid.js +61 -0
  161. package/dist/services/form-layout-source/source-grid.js.map +1 -0
  162. package/dist/services/form-layout-source/types.d.ts +242 -0
  163. package/dist/services/form-layout-source/types.d.ts.map +1 -0
  164. package/dist/services/form-layout-source/types.js +2 -0
  165. package/dist/services/form-layout-source/types.js.map +1 -0
  166. package/dist/services/form-layout-source/verify.d.ts +14 -0
  167. package/dist/services/form-layout-source/verify.d.ts.map +1 -0
  168. package/dist/services/form-layout-source/verify.js +226 -0
  169. package/dist/services/form-layout-source/verify.js.map +1 -0
  170. package/dist/services/form-linkage-condition.d.ts +15 -0
  171. package/dist/services/form-linkage-condition.d.ts.map +1 -1
  172. package/dist/services/form-linkage-condition.js +19 -10
  173. package/dist/services/form-linkage-condition.js.map +1 -1
  174. package/dist/services/form-obj-meta.d.ts +72 -0
  175. package/dist/services/form-obj-meta.d.ts.map +1 -0
  176. package/dist/services/form-obj-meta.js +103 -0
  177. package/dist/services/form-obj-meta.js.map +1 -0
  178. package/dist/services/form-sub-detail.d.ts +25 -0
  179. package/dist/services/form-sub-detail.d.ts.map +1 -1
  180. package/dist/services/form-sub-detail.js +64 -0
  181. package/dist/services/form-sub-detail.js.map +1 -1
  182. package/dist/services/validate-help.d.ts +25 -0
  183. package/dist/services/validate-help.d.ts.map +1 -0
  184. package/dist/services/validate-help.js +29 -0
  185. package/dist/services/validate-help.js.map +1 -0
  186. package/dist/services/workflow-operator.d.ts +12 -5
  187. package/dist/services/workflow-operator.d.ts.map +1 -1
  188. package/dist/services/workflow-operator.js +41 -16
  189. package/dist/services/workflow-operator.js.map +1 -1
  190. package/package.json +3 -1
  191. package/skill-docs/SKILL.md +38 -165
  192. package/skill-docs/_catalog.md +4 -1
  193. package/skill-docs/actionflows/references/components/document/DocumentSave.md +17 -17
  194. package/skill-docs/actionflows/references/components/workflow/ApproveCompletelyDelete.md +29 -0
  195. package/skill-docs/actionflows/references/components/workflow/ApproveDelete.md +1 -1
  196. package/skill-docs/assets/schemas/image-style-observation.schema.json +1355 -0
  197. package/skill-docs/references/coding/guide-page-code.md +2 -0
  198. package/skill-docs/references/coding/ref-compile-rules.md +2 -0
  199. package/skill-docs/references/common/capability-boundaries.md +15 -0
  200. package/skill-docs/references/common/guide-install.md +44 -0
  201. package/skill-docs/references/common/guide-plan-template.md +167 -164
  202. package/skill-docs/references/common/map.md +9 -0
  203. package/skill-docs/references/common/ref-cli-commands.md +650 -635
  204. package/skill-docs/references/form/guide-create-form.md +2 -0
  205. package/skill-docs/references/form/guide-field-linkage.md +185 -58
  206. package/skill-docs/references/form/guide-form-formula-functions.md +354 -343
  207. package/skill-docs/references/form/guide-form-layout-planning.md +6 -0
  208. package/skill-docs/references/form/guide-form-layout-source.md +366 -0
  209. package/skill-docs/references/form/guide-form-linkage.md +56 -66
  210. package/skill-docs/references/form/guide-form-view.md +1 -1
  211. package/skill-docs/references/form/guide-formula-linkage.md +44 -1
  212. package/skill-docs/references/workflow/guide-workflow.md +1 -1
@@ -192,6 +192,8 @@ EBuilder 关联字段在创建时指定目标表单 `objId` 和显示字段:
192
192
 
193
193
  ## 执行创建
194
194
 
195
+ 需要还原图片或 XLSX 源样式时,可在普通创建完成后使用[源样式还原命令链](guide-form-layout-source.md),或同时传 `--layout-source @source.json --layout-spec @spec.json --layout-artifact-out artifact.json`。该入口先验证源文件,继续使用原字段创建链,最后在高级属性、公式和分组重排结束后保存精确布局。失败保留已有 objId/formId,重试只处理该对象,不重复建表。
196
+
195
197
  ```bash
196
198
  e10-cli form create <appId> "采购合同" --fields @fields.json --layout EXCEL
197
199
  ```
@@ -2,33 +2,68 @@
2
2
 
3
3
  ## 概述
4
4
 
5
- 字段联动(FormDataLinkage):表单字段值改变时,自动查询**另一张表**(按数据ID=触发字段值过滤),把查到的字段值**带出赋值**到本表单字段。支持单跳(一次直接带出)和多跳链式(多次中转后带出)。
5
+ 本指南汇总字段值的带出与赋值:关联 EBuilder 字段直接带出、HRM 属性带出,以及跨表查询赋值(`FormDataLinkage`)。先按来源选择配置方式,再看对应命令。
6
6
 
7
- 背后是一个 ESB FieldLinkage 动作流(触发 + N 个 EnquiryForm 查询 + Output 赋值),CLI 自动完成建 ESB app + saveDesign + 绑定。
7
+ 其中 `FormDataLinkage` 可按触发字段值查询另一张表,把结果赋给本表主表或明细字段;背后由 ESB FieldLinkage 动作流执行,CLI 自动完成创建和绑定。支持两种方式:快捷配置(`--condition` / `--assign`,任意条件、多查询字段与多赋值)和旧单跳/多跳(`--source-form` / `--query-field` / `--hops`,固定按数据 ID 过滤)。
8
8
 
9
- ## 三种联动对比
9
+ ## 选择带出方式
10
10
 
11
- | | 属性联动(显隐) | 关联表带出(form relate) | **字段联动(field-linkage)** |
12
- |---|---|---|---|
13
- | 命令 | `form linkage add` | `form relate` | `form field-linkage add` |
14
- | 接口 | viewlinkage | ffRelateField module:hrm | saveFormDataLinkage + saveDesign(ESB) |
15
- | 作用 | 改字段显示属性(hide/show/required) | 换 Employee/Department→带 HRM 属性 | **查任意表→带出任意字段赋值** |
16
- | 源 | 表单字段值条件 | Employee/Department(HRM 源) | 任意字段→任意表查询 |
17
- | 复杂度 | 简单 | 简单(单源单属性) | 复杂(跨表多跳,ESB 动作流) |
18
- | 关系 | — | — | **字段联动是关联表带出的进阶版** |
11
+ | 需求 | 配置方式 | 命令或入口 |
12
+ |---|---|---|
13
+ | 关联 EBuilder 记录后直接复制该记录的一个字段 | 字段级 `ffRelateField` | 建表时 `relateFrom`;建表后 `form edit-field --relate-from` |
14
+ | 人员或部门字段变化后带出 HRM 属性 | 字段级 `ffRelateField` | `form relate` |
15
+ | 按条件查询另一张表,单跳或多跳赋值 | `FormDataLinkage`,由 ESB 动作流实现 | `form field-linkage`(快捷配置或旧单跳/多跳) |
16
+
17
+ 这些都改变字段**值**。按条件改变隐藏、只读、必填等**显示属性**,使用 `form linkage`,见 [显示属性联动指南](guide-form-linkage.md)。
19
18
 
20
19
  > 本文讲的是**跨表**带出。本表字段之间用公式互相计算赋值的是**函数联动**(eb 表 `form formula-linkage`、流程表单 `wf-form formula-linkage`),见 `guide-formula-linkage.md` —— 两者 `linkageType` 不同(`excel` vs `template`),`form field-linkage list/delete` 看不到也删不掉函数联动。
21
20
 
22
- ## 何时用多跳
21
+ ## 关联 EBuilder 字段直接带出(`ffRelateField`)
22
+
23
+ 当 EBuilder 关联字段选中某条记录后,自动将该记录的一个字段值复制到当前字段。例如:选客户后带出联系人;选合同后带出合同金额。
24
+
25
+ ### 建表时配置
26
+
27
+ `form create --fields` 里用 `relateFrom` 定义,CLI 在创建字段后配置 `ffRelateField`:
28
+
29
+ ```json
30
+ { "componentKey": "Text", "fieldName": "联系人",
31
+ "relateFrom": { "ebuilderField": "关联客户", "sourceFieldId": "1296220571782152194" } }
32
+ ```
33
+
34
+ ### 建表后补配
35
+
36
+ ```bash
37
+ e10-cli form edit-field <objId> <appId> <fieldId> \
38
+ --relate-from <EBuilder字段名> \
39
+ --relate-from-source <目标表单源字段fieldId>
40
+ ```
41
+
42
+ `sourceFieldId` 和 `--relate-from-source` 必须是关联目标表单中源字段的数字 `fieldId`,不能写字段名。先用 `form read <目标表objId> --app-id <appId>` 查实际 ID。`--relate-from` 是本表单中的 EBuilder 关联字段名。
43
+
44
+ ## HRM 属性带出(`form relate`)
45
+
46
+ 本表单的人员或部门字段变化后,自动向目标字段填入 HRM 属性。源字段必须是 Employee 或 Department 类型。Employee 源的 `ffRelateField` 带 `module:"hrm"`,Department 源不带。
47
+
48
+ ```bash
49
+ # 申请人(Employee)变化 → 向申请人工号填入邮箱
50
+ e10-cli form relate <appId> <objId> 申请人工号 --from 申请人 --key email
51
+
52
+ # 所属部门(Department)变化 → 向申请人工号填入部门编号
53
+ e10-cli form relate <appId> <objId> 申请人工号 --from 所属部门 --key code
54
+ ```
23
55
 
24
- **Text 字段赋值必须用名称(多跳),不能直接赋 ID。**
56
+ | 参数 | 说明 |
57
+ |---|---|
58
+ | `<targetField>` | 被填充的目标字段,名称或 `fieldId` |
59
+ | `--from <field>` | 表单中的源字段,必须是 Employee 或 Department 类型 |
60
+ | `--key <key>` | 带出的 HRM 属性;默认 Employee=`department`、Department=`name`;不传 `--title` 时自动取属性中文名 |
25
61
 
26
- | 场景 | 跳数 | 示例 |
27
- |------|------|------|
28
- | 带出字段是 EBuilder(存 ID)→ 目标也是 EBuilder | 单跳 | 关联合同→查合同信息表→带出关联客户(ID→EBuilder 字段) |
29
- | 带出字段存 ID → 目标是 Text(要名称) | **多跳** | 关联客户→查客户信息表→客户类型(ID)→查客户类型表→类型名称(Text)→填 Text 字段 |
62
+ `--key` 从平台 `listBusinessField` 清单校验。Employee 属性包括 `username` 姓名、`email` 邮箱、`superior` 上级、`mobile` 手机、`jobNum` 工号、`hiredate` 入职时间、`department` 部门、`position` 岗位、`grade` 职级、`allSuperiors` 所有上级等。Department 属性包括 `name` 部门名称、`code` 部门编号、`parent` 上级部门、`fullname` 部门全称、`department.coadjutant` 协办人、`deptEmployee` 部门人员。
30
63
 
31
- **判断原则**:目标字段是 EBuilder/Select(存 ID)→ 单跳即可;目标字段是 Text(要展示名称)→ 必须多跳到名称表取名称。
64
+ 目标字段类型与带出属性不匹配时,命令只提示警告、不阻止;例如 `deptEmployee` 通常应填入 Employee 字段。
65
+
66
+ ## 跨表查询赋值(`FormDataLinkage`)
32
67
 
33
68
  ## CLI 命令
34
69
 
@@ -42,82 +77,174 @@ e10-cli form field-linkage read <appId> <objId> <linkageId>
42
77
  # 查源表可带出字段
43
78
  e10-cli form field-linkage fields <appId> <formId>
44
79
 
80
+ # 可用触发动作
81
+ e10-cli form field-linkage events <appId> <objId> [--effect formLayout|workFlow|includeNode]
82
+
45
83
  # 删除(批量)
46
84
  e10-cli form field-linkage delete <appId> <objId> <linkageId...>
47
85
  ```
48
86
 
49
- ### 新增(add)
87
+ ## 快捷配置(add)
50
88
 
51
- **单跳**(一次直接带出):
52
89
  ```bash
53
90
  e10-cli form field-linkage add <appId> <objId> \
54
- --trigger <触发字段名> \
55
- --source-form <目标表objId> \
56
- --query-field <目标表带出字段名> \
57
- --target <本表目标字段名>
91
+ --trigger <本表触发字段名> \
92
+ --source-form <查询目标表 objId> \
93
+ --condition "源表字段:算子:值" \
94
+ --query-fields "源表字段1,源表字段2" \
95
+ --assign "源表查询字段=本表目标字段"
58
96
  ```
59
97
 
60
- **多跳**(多次中转后带出):
98
+ ### 查询条件(`--condition`)
99
+
100
+ 可重复,多个为「且」。写法 `源表字段:算子:值`,算子与动作流筛选共用同一套:
101
+
102
+ | 类别 | 算子 |
103
+ |---|---|
104
+ | 比较 | 等于 / 不等于 / 大于 / 大于等于 / 小于 / 小于等于 |
105
+ | 文本 | 包含 / 不包含 / 开头包含 / 开头不包含 / 结尾包含 / 结尾不包含 |
106
+ | 集合 | 属于 / 不属于 / 被包含于 |
107
+ | 无值 | 为空 / 不为空(可不写冒号和值) |
108
+ | 区间 | 区间(写 `起始~结束`) |
109
+
110
+ 值写 `@本表字段名` 表示引用本表字段;否则按字面值。示例:
111
+
61
112
  ```bash
62
- e10-cli form field-linkage add <appId> <objId> \
63
- --trigger <触发字段名> \
64
- --target <本表目标字段名> \
65
- --hops "<源表objId:带出字段名,源表objId:带出字段名,...>"
113
+ --condition "测试字段C:eq:11111"
114
+ --condition "测试字段C:等于:@测试字段A"
115
+ --condition "日期字段A:区间:2026-10-20~2026-10-21"
116
+ --condition "备注:不为空"
66
117
  ```
67
118
 
68
- `--hops` 格式:每跳 `objId:字段名`,逗号分隔。前一跳的带出值 = 下一跳的过滤值(数据ID=前一跳结果)。最后一跳的带出值赋给 `--target`。
119
+ ### 查询字段(`--query-fields`)
69
120
 
70
- ## 配置示例
121
+ 逗号分隔的源表字段名。不给时会自动并入 `--assign` 的源字段和明细依据字段。
71
122
 
72
- ### 示例1:单跳——关联合同→合同信息表→关联客户
123
+ ### 赋值(`--assign`)
73
124
 
125
+ 可重复,`源表查询字段=本表目标字段`:
126
+
127
+ - 主表字段直接写字段名
128
+ - 明细表字段写 `明细表名.字段名`
129
+
130
+ ```bash
131
+ --assign "测试字段C=测试字段A"
132
+ --assign "测试字段C=明细表1.明细字段1"
74
133
  ```
75
- 关联合同(EBuilder→合同信息表) 值改变
76
- → 查合同信息表 by 数据ID=关联合同
77
- → 带出关联客户(EBuilder→客户信息表,存ID)
78
- → 赋值到本表.关联客户(EBuilder字段,存ID)
134
+
135
+ ### 明细行依据(`--basis`)
136
+
137
+ `明细表名=源表字段名`。决定写入明细表时按哪一列匹配/生成行。不给则取该明细表第一个赋值的源字段;当被赋值的源字段正好是依据值时,设计器里显示为「依据值本身」。
138
+
139
+ ```bash
140
+ --basis "明细表1=测试字段C"
79
141
  ```
80
142
 
143
+ ### 明细配置(三个开关)
144
+
145
+ | 参数 | 取值 | 对应设计器 |
146
+ |---|---|---|
147
+ | `--detail-mode` | `add`(默认)/ `cover` / `update` | 主表联动明细表时:添加明细 / 覆盖明细 / 更新明细 |
148
+ | `--detail-add` | `override`(默认)/ `append` | 明细表添加行时:删除已联动出的明细再添加 / 累计添加明细 |
149
+ | `--fission` | `on`(默认)/ `off` | 联动出的值继续触发联动 |
150
+
151
+ ### 触发动作(`--event`)
152
+
153
+ 可重复,写法同函数联动:事件名或 type,可带 `类型:字段,字段`。默认 `changeField`(值改变时),字段取 `--trigger`。
154
+
81
155
  ```bash
82
- e10-cli form field-linkage add <appId> <objId> \
83
- --trigger 关联合同 --source-form <合同信息表objId> --query-field 关联客户 --target 关联客户
156
+ --event changeField
157
+ --event onLoadForm
158
+ --event "changeField:测试字段A"
84
159
  ```
85
160
 
86
- ### 示例2:多跳——关联客户→客户信息表→客户类型→客户类型表→类型名称→填Text
161
+ 表单级 / 流程级事件(载入时、创建数据时…)不需要触发字段。流程事件(提交/批准、转发、保存…)需要配合 `--effect workFlow|includeNode`。
87
162
 
163
+ ### 生效维度(`--effect`)
164
+
165
+ `form`(默认,当前表单)/ `formLayout`(表单布局,可配 `--layout-id`)/ `workFlow`(当前工作流)/ `includeNode`(选择节点,配 `--workflow-id` 与 `--node`)。
166
+
167
+ ### 启用状态(`--state`)
168
+
169
+ `on`(默认)/ `off`。
170
+
171
+ ### 赋值前提(`--precondition`)
172
+
173
+ 满足前提时才执行赋值。可重复,多个为「且」:
174
+
175
+ ```bash
176
+ --precondition "rlytest:不为空"
177
+ --precondition "测试字段C:包含:@rlytest" # @ 先查查询结果字段
178
+ --precondition "日期字段A:包含:@测试字段A" # 查不到再按本表字段
88
179
  ```
89
- 关联客户(EBuilder→客户信息表) 值改变
90
- → Step1: 查客户信息表 by 数据ID=关联客户 → 带出客户类型(EBuilder→客户类型表,存ID)
91
- → Step2: 查客户类型表 by 数据ID=客户类型(Step1结果) → 带出类型名称(Text)
92
- → 赋值到本表.客户类型(Text字段,要名称不要ID)
180
+
181
+ 前提条件保存在 ESB 条件服务里,开关它等价于重新保存动作流设计。
182
+
183
+ ## 修改(update)
184
+
185
+ ```bash
186
+ e10-cli form field-linkage update <appId> <objId> <linkageId> \
187
+ [--name <名称>] [--state on|off] \
188
+ [--event <事件...>] [--trigger <字段...>] [--effect <维度>] \
189
+ [--detail-mode add|cover|update] [--detail-add override|append] [--fission on|off] \
190
+ [--precondition <条件...>] [--clear-precondition]
93
191
  ```
94
192
 
193
+ - 不给 `--event` / `--trigger` 时原样沿用现有触发动作
194
+ - 只改启停时走专用接口,不重发整套联动报文
195
+ - 赋值前提不属于联动记录,由 CLI 读回动作流设计后只改 Output 节点再保存
196
+
197
+ ## 旧单跳 / 多跳(兼容保留)
198
+
199
+ **单跳**:按「数据ID = 触发字段值」过滤。
200
+
95
201
  ```bash
96
202
  e10-cli form field-linkage add <appId> <objId> \
97
- --trigger 关联客户 --target 客户类型 \
98
- --hops "<客户信息表objId>:客户类型,<客户类型表objId>:类型名称"
203
+ --trigger <触发字段名> \
204
+ --source-form <目标表objId> \
205
+ --query-field <目标表带出字段名> \
206
+ --target <本表目标字段名>
99
207
  ```
100
208
 
101
- ### 示例3:链式联动(两条独立 linkage 串联)
209
+ **多跳**:`--hops "objId:字段名,objId:字段名"`,前一跳的带出值作为下一跳的过滤值。
102
210
 
103
- 关联合同→(linkage1)→关联客户→(linkage2)→客户类型→(linkage3)→类型名称
211
+ **何时用多跳**:目标字段是 Text(要名称)而源表存的是 ID(EBuilder/Select)时,需要多跳一次到名称表取名称;目标字段本身存 ID 则单跳即可。
104
212
 
105
- 每条 linkage 的 `--trigger` 是上一条的 `--target`。分开 `add` 多次即可。
213
+ ## 示例
106
214
 
107
- ## 查源表字段
215
+ **单跳(快捷配置)**:
108
216
 
109
217
  ```bash
110
- # 查某表单有哪些可带出字段
111
- e10-cli form field-linkage fields <appId> <formId>
218
+ e10-cli form field-linkage add <appId> <objId> \
219
+ --trigger 关联合同 \
220
+ --source-form <合同信息表objId> \
221
+ --condition "关联合同:等于:@关联合同" \
222
+ --query-fields "关联客户" \
223
+ --assign "关联客户=关联客户"
112
224
  ```
113
225
 
114
- 或用 `e10-cli form read <objId> --app-id <appId>` 取字段 fieldId(配置 --hops 时需知道字段名)。
226
+ **主表联动明细表(多值写入 + 赋值前提)**:
227
+
228
+ ```bash
229
+ e10-cli form field-linkage add <appId> <objId> \
230
+ --trigger 客户编号 \
231
+ --source-form <订单表objId> \
232
+ --condition "客户编号:等于:@客户编号" \
233
+ --query-fields "订单号,金额" \
234
+ --assign "订单号=订单明细.订单号" \
235
+ --assign "金额=订单明细.金额" \
236
+ --basis "订单明细=订单号" \
237
+ --detail-mode add --detail-add override --fission on \
238
+ --precondition "订单号:不为空"
239
+ ```
115
240
 
116
241
  ## 注意事项
117
242
 
118
- 1. **Text 字段必须多跳取名称**:目标字段是 Text → 带出值必须是名称(文本),不能是 ID。如果源表存的是 ID(EBuilder/Select),需多跳到名称表取名称。
119
- 2. **orgId 必须正确**:CLI 自动从 getForm 取 orgId,传给 application/save 建 ESB app。没有 orgId 的 app 不完整,saveDesign 会 500。
120
- 3. **多跳 EnquiryForm 需要 sources**:非首跳的查询动作必须有 `sources` 指向前一跳,否则服务器报"有两个起始执行组件"(CLI 已处理)。
121
- 4. **FormData 引用格式**:触发字段 `FormData.<本表formId>.<触发字段id>`;查询结果 `FormData.<源表objId>[].field_<带出字段id>`。
122
- 5. **--hops 的 objId 是表单 objId**(不是 formId)。CLI 内部自动解析 objId→formId。
123
- 6. **联动名称**:不传 `--name` 时自动生成 `<本表名>.<触发字段>→<最后源表名>.<最后带出字段>`。
243
+ 1. **三种明细模式**:添加/覆盖/更新由 `--detail-mode` 决定;「删除再添加 / 累计添加」是另一个开关 `--detail-add`。
244
+ 2. **明细行依据**决定行匹配:写入明细表时,依据值相同的行按模式处理。
245
+ 3. **赋值前提引用字段**:`@字段名` 先按查询结果字段解析(`source` = 查询节点),找不到再按本表字段(`source` = 触发事件)。
246
+ 4. **算子与动作流筛选同源**:按字段类型族校验,不支持的算子会直接报错。
247
+ 5. **FormData 引用格式**:本表字段 `FormData.<本表formId>.<字段id>`;查询结果 `FormData.<源表objId>[].field_<字段id>`。
248
+ 6. **--source-form 的 objId 是表单 objId**(不是 formId),CLI 内部自动解析。
249
+ 7. **联动名称**:不传 `--name` 时自动生成 `<本表名>.<触发字段>→<源表名>.<条件字段>`。
250
+ 8. **SQL 联动类型尚未覆盖**:只支持「动作流联动」(`linkageType=template`);设计器里的「SQL可视化配置 / SQL联动」两条支路尚未实现。