weaver-e10-builder 1.5.13 → 1.5.15

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 (340) hide show
  1. package/dist/commands/actionflow.d.ts.map +1 -1
  2. package/dist/commands/actionflow.js +1 -0
  3. package/dist/commands/actionflow.js.map +1 -1
  4. package/dist/commands/designer-setters.d.ts.map +1 -1
  5. package/dist/commands/designer-setters.js +148 -47
  6. package/dist/commands/designer-setters.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 +53 -7
  9. package/dist/commands/form-add-detail-table.js.map +1 -1
  10. package/dist/commands/form-browser-definition.d.ts +14 -0
  11. package/dist/commands/form-browser-definition.d.ts.map +1 -0
  12. package/dist/commands/form-browser-definition.js +493 -0
  13. package/dist/commands/form-browser-definition.js.map +1 -0
  14. package/dist/commands/form-code.d.ts +5 -0
  15. package/dist/commands/form-code.d.ts.map +1 -0
  16. package/dist/commands/form-code.js +276 -0
  17. package/dist/commands/form-code.js.map +1 -0
  18. package/dist/commands/form-engine-linkage.d.ts +3 -0
  19. package/dist/commands/form-engine-linkage.d.ts.map +1 -0
  20. package/dist/commands/form-engine-linkage.js +199 -0
  21. package/dist/commands/form-engine-linkage.js.map +1 -0
  22. package/dist/commands/form-formula.d.ts.map +1 -1
  23. package/dist/commands/form-formula.js +7 -19
  24. package/dist/commands/form-formula.js.map +1 -1
  25. package/dist/commands/form-layout-template-advanced.d.ts +3 -0
  26. package/dist/commands/form-layout-template-advanced.d.ts.map +1 -0
  27. package/dist/commands/form-layout-template-advanced.js +115 -0
  28. package/dist/commands/form-layout-template-advanced.js.map +1 -0
  29. package/dist/commands/form-layout-template-easy.d.ts +3 -0
  30. package/dist/commands/form-layout-template-easy.d.ts.map +1 -0
  31. package/dist/commands/form-layout-template-easy.js +59 -0
  32. package/dist/commands/form-layout-template-easy.js.map +1 -0
  33. package/dist/commands/form-layout.d.ts.map +1 -1
  34. package/dist/commands/form-layout.js +77 -0
  35. package/dist/commands/form-layout.js.map +1 -1
  36. package/dist/commands/form-list-filter.js +1 -1
  37. package/dist/commands/form-list-filter.js.map +1 -1
  38. package/dist/commands/form-list-utils.d.ts +5 -0
  39. package/dist/commands/form-list-utils.d.ts.map +1 -1
  40. package/dist/commands/form-list-utils.js +23 -3
  41. package/dist/commands/form-list-utils.js.map +1 -1
  42. package/dist/commands/form-permission.d.ts.map +1 -1
  43. package/dist/commands/form-permission.js +55 -19
  44. package/dist/commands/form-permission.js.map +1 -1
  45. package/dist/commands/form-physical-table.d.ts.map +1 -1
  46. package/dist/commands/form-physical-table.js +8 -2
  47. package/dist/commands/form-physical-table.js.map +1 -1
  48. package/dist/commands/form.d.ts.map +1 -1
  49. package/dist/commands/form.js +143 -5
  50. package/dist/commands/form.js.map +1 -1
  51. package/dist/commands/menu.d.ts +68 -2
  52. package/dist/commands/menu.d.ts.map +1 -1
  53. package/dist/commands/menu.js +186 -41
  54. package/dist/commands/menu.js.map +1 -1
  55. package/dist/commands/page.d.ts.map +1 -1
  56. package/dist/commands/page.js +29 -6
  57. package/dist/commands/page.js.map +1 -1
  58. package/dist/commands/special.d.ts.map +1 -1
  59. package/dist/commands/special.js +3 -2
  60. package/dist/commands/special.js.map +1 -1
  61. package/dist/commands/wf-form.d.ts.map +1 -1
  62. package/dist/commands/wf-form.js +76 -31
  63. package/dist/commands/wf-form.js.map +1 -1
  64. package/dist/commands/workflow-auth-resp.js +2 -2
  65. package/dist/commands/workflow-auth-resp.js.map +1 -1
  66. package/dist/commands/workflow-base-command.d.ts +4 -0
  67. package/dist/commands/workflow-base-command.d.ts.map +1 -0
  68. package/dist/commands/workflow-base-command.js +6 -0
  69. package/dist/commands/workflow-base-command.js.map +1 -0
  70. package/dist/commands/workflow-base-settings.d.ts +3 -0
  71. package/dist/commands/workflow-base-settings.d.ts.map +1 -0
  72. package/dist/commands/workflow-base-settings.js +76 -0
  73. package/dist/commands/workflow-base-settings.js.map +1 -0
  74. package/dist/commands/workflow-condition.d.ts.map +1 -1
  75. package/dist/commands/workflow-condition.js +59 -450
  76. package/dist/commands/workflow-condition.js.map +1 -1
  77. package/dist/commands/workflow-export.d.ts +9 -0
  78. package/dist/commands/workflow-export.d.ts.map +1 -0
  79. package/dist/commands/workflow-export.js +121 -0
  80. package/dist/commands/workflow-export.js.map +1 -0
  81. package/dist/commands/workflow-function-settings.d.ts +3 -0
  82. package/dist/commands/workflow-function-settings.d.ts.map +1 -0
  83. package/dist/commands/workflow-function-settings.js +47 -0
  84. package/dist/commands/workflow-function-settings.js.map +1 -0
  85. package/dist/commands/workflow-node.d.ts.map +1 -1
  86. package/dist/commands/workflow-node.js +28 -53
  87. package/dist/commands/workflow-node.js.map +1 -1
  88. package/dist/commands/workflow-operator-batch.d.ts +3 -0
  89. package/dist/commands/workflow-operator-batch.d.ts.map +1 -0
  90. package/dist/commands/workflow-operator-batch.js +35 -0
  91. package/dist/commands/workflow-operator-batch.js.map +1 -0
  92. package/dist/commands/workflow-setting.d.ts.map +1 -1
  93. package/dist/commands/workflow-setting.js +137 -406
  94. package/dist/commands/workflow-setting.js.map +1 -1
  95. package/dist/commands/workflow-subprocess.d.ts.map +1 -1
  96. package/dist/commands/workflow-subprocess.js +21 -33
  97. package/dist/commands/workflow-subprocess.js.map +1 -1
  98. package/dist/commands/workflow.d.ts.map +1 -1
  99. package/dist/commands/workflow.js +18 -33
  100. package/dist/commands/workflow.js.map +1 -1
  101. package/dist/index.js +18 -1
  102. package/dist/index.js.map +1 -1
  103. package/dist/services/actionflow/browser_source.d.ts +9 -0
  104. package/dist/services/actionflow/browser_source.d.ts.map +1 -0
  105. package/dist/services/actionflow/browser_source.js +12 -0
  106. package/dist/services/actionflow/browser_source.js.map +1 -0
  107. package/dist/services/actionflow/components/date_trigger.js +1 -1
  108. package/dist/services/actionflow/components/date_trigger.js.map +1 -1
  109. package/dist/services/actionflow/components/document_actions.d.ts.map +1 -1
  110. package/dist/services/actionflow/components/document_actions.js +178 -25
  111. package/dist/services/actionflow/components/document_actions.js.map +1 -1
  112. package/dist/services/actionflow/components/enquiry_form.js +1 -1
  113. package/dist/services/actionflow/components/enquiry_form.js.map +1 -1
  114. package/dist/services/actionflow/components/logic_flow_set.d.ts.map +1 -1
  115. package/dist/services/actionflow/components/logic_flow_set.js +80 -8
  116. package/dist/services/actionflow/components/logic_flow_set.js.map +1 -1
  117. package/dist/services/actionflow/components/meeting_create.d.ts.map +1 -1
  118. package/dist/services/actionflow/components/meeting_create.js +1 -0
  119. package/dist/services/actionflow/components/meeting_create.js.map +1 -1
  120. package/dist/services/actionflow/components/schedule_create.d.ts.map +1 -1
  121. package/dist/services/actionflow/components/schedule_create.js +2 -0
  122. package/dist/services/actionflow/components/schedule_create.js.map +1 -1
  123. package/dist/services/actionflow/components/time_batch_trigger.js +1 -1
  124. package/dist/services/actionflow/components/time_batch_trigger.js.map +1 -1
  125. package/dist/services/actionflow/components/workflow_actions.d.ts.map +1 -1
  126. package/dist/services/actionflow/components/workflow_actions.js +6 -2
  127. package/dist/services/actionflow/components/workflow_actions.js.map +1 -1
  128. package/dist/services/actionflow/context_preflight.d.ts.map +1 -1
  129. package/dist/services/actionflow/context_preflight.js +103 -6
  130. package/dist/services/actionflow/context_preflight.js.map +1 -1
  131. package/dist/services/actionflow/form_source.d.ts +2 -0
  132. package/dist/services/actionflow/form_source.d.ts.map +1 -1
  133. package/dist/services/actionflow/form_source.js +8 -0
  134. package/dist/services/actionflow/form_source.js.map +1 -1
  135. package/dist/services/actionflow/formula_service.d.ts.map +1 -1
  136. package/dist/services/actionflow/formula_service.js +35 -19
  137. package/dist/services/actionflow/formula_service.js.map +1 -1
  138. package/dist/services/actionflow/logicflow_source.d.ts +5 -0
  139. package/dist/services/actionflow/logicflow_source.d.ts.map +1 -0
  140. package/dist/services/actionflow/logicflow_source.js +15 -0
  141. package/dist/services/actionflow/logicflow_source.js.map +1 -0
  142. package/dist/services/actionflow/preflight_service.d.ts +15 -0
  143. package/dist/services/actionflow/preflight_service.d.ts.map +1 -1
  144. package/dist/services/actionflow/preflight_service.js +558 -26
  145. package/dist/services/actionflow/preflight_service.js.map +1 -1
  146. package/dist/services/actionflow/runtime_metadata.d.ts +8 -0
  147. package/dist/services/actionflow/runtime_metadata.d.ts.map +1 -1
  148. package/dist/services/actionflow/runtime_metadata.js +25 -0
  149. package/dist/services/actionflow/runtime_metadata.js.map +1 -1
  150. package/dist/services/actionflow/workflow_compiler.d.ts.map +1 -1
  151. package/dist/services/actionflow/workflow_compiler.js +50 -10
  152. package/dist/services/actionflow/workflow_compiler.js.map +1 -1
  153. package/dist/services/actionflow/workflow_source.d.ts +2 -0
  154. package/dist/services/actionflow/workflow_source.d.ts.map +1 -1
  155. package/dist/services/actionflow/workflow_source.js +7 -0
  156. package/dist/services/actionflow/workflow_source.js.map +1 -1
  157. package/dist/services/auth-resp-condition.d.ts +7 -3
  158. package/dist/services/auth-resp-condition.d.ts.map +1 -1
  159. package/dist/services/auth-resp-condition.js +58 -63
  160. package/dist/services/auth-resp-condition.js.map +1 -1
  161. package/dist/services/browser.d.ts +5 -0
  162. package/dist/services/browser.d.ts.map +1 -1
  163. package/dist/services/browser.js +16 -4
  164. package/dist/services/browser.js.map +1 -1
  165. package/dist/services/condition-rules.d.ts +2 -30
  166. package/dist/services/condition-rules.d.ts.map +1 -1
  167. package/dist/services/condition-rules.js +3 -219
  168. package/dist/services/condition-rules.js.map +1 -1
  169. package/dist/services/designer-dataset.d.ts +45 -0
  170. package/dist/services/designer-dataset.d.ts.map +1 -0
  171. package/dist/services/designer-dataset.js +156 -0
  172. package/dist/services/designer-dataset.js.map +1 -0
  173. package/dist/services/form-association.d.ts +7 -0
  174. package/dist/services/form-association.d.ts.map +1 -1
  175. package/dist/services/form-association.js +22 -1
  176. package/dist/services/form-association.js.map +1 -1
  177. package/dist/services/form-code.d.ts +53 -0
  178. package/dist/services/form-code.d.ts.map +1 -0
  179. package/dist/services/form-code.js +370 -0
  180. package/dist/services/form-code.js.map +1 -0
  181. package/dist/services/form-create.d.ts +20 -0
  182. package/dist/services/form-create.d.ts.map +1 -1
  183. package/dist/services/form-create.js +73 -1
  184. package/dist/services/form-create.js.map +1 -1
  185. package/dist/services/form-field-build.d.ts +1 -1
  186. package/dist/services/form-field-build.d.ts.map +1 -1
  187. package/dist/services/form-field-build.js +20 -1
  188. package/dist/services/form-field-build.js.map +1 -1
  189. package/dist/services/form-field-drop.d.ts +2 -0
  190. package/dist/services/form-field-drop.d.ts.map +1 -1
  191. package/dist/services/form-field-drop.js +2 -0
  192. package/dist/services/form-field-drop.js.map +1 -1
  193. package/dist/services/form-layout-detail-insert.d.ts +58 -0
  194. package/dist/services/form-layout-detail-insert.d.ts.map +1 -0
  195. package/dist/services/form-layout-detail-insert.js +293 -0
  196. package/dist/services/form-layout-detail-insert.js.map +1 -0
  197. package/dist/services/form-layout-insert.d.ts.map +1 -1
  198. package/dist/services/form-layout-insert.js +34 -2
  199. package/dist/services/form-layout-insert.js.map +1 -1
  200. package/dist/services/form-layout-source/compile.d.ts.map +1 -1
  201. package/dist/services/form-layout-source/compile.js +11 -4
  202. package/dist/services/form-layout-source/compile.js.map +1 -1
  203. package/dist/services/form-layout-template-advanced.d.ts +330 -0
  204. package/dist/services/form-layout-template-advanced.d.ts.map +1 -0
  205. package/dist/services/form-layout-template-advanced.js +1437 -0
  206. package/dist/services/form-layout-template-advanced.js.map +1 -0
  207. package/dist/services/form-layout-template-easy.d.ts +34 -0
  208. package/dist/services/form-layout-template-easy.d.ts.map +1 -0
  209. package/dist/services/form-layout-template-easy.js +159 -0
  210. package/dist/services/form-layout-template-easy.js.map +1 -0
  211. package/dist/services/form-layout-template-flow.d.ts +23 -0
  212. package/dist/services/form-layout-template-flow.d.ts.map +1 -0
  213. package/dist/services/form-layout-template-flow.js +99 -0
  214. package/dist/services/form-layout-template-flow.js.map +1 -0
  215. package/dist/services/form-permission-archive.d.ts +23 -1
  216. package/dist/services/form-permission-archive.d.ts.map +1 -1
  217. package/dist/services/form-permission-archive.js +54 -2
  218. package/dist/services/form-permission-archive.js.map +1 -1
  219. package/dist/services/form-physical-table.d.ts +10 -0
  220. package/dist/services/form-physical-table.d.ts.map +1 -1
  221. package/dist/services/form-physical-table.js +20 -0
  222. package/dist/services/form-physical-table.js.map +1 -1
  223. package/dist/services/form-view-linkage-functions.d.ts +19 -0
  224. package/dist/services/form-view-linkage-functions.d.ts.map +1 -0
  225. package/dist/services/form-view-linkage-functions.js +90 -0
  226. package/dist/services/form-view-linkage-functions.js.map +1 -0
  227. package/dist/services/matrix-condition.d.ts +32 -1
  228. package/dist/services/matrix-condition.d.ts.map +1 -1
  229. package/dist/services/matrix-condition.js +169 -6
  230. package/dist/services/matrix-condition.js.map +1 -1
  231. package/dist/services/menu-catalog.d.ts +24 -1
  232. package/dist/services/menu-catalog.d.ts.map +1 -1
  233. package/dist/services/menu-catalog.js +49 -2
  234. package/dist/services/menu-catalog.js.map +1 -1
  235. package/dist/services/workflow-base-settings.d.ts +117 -0
  236. package/dist/services/workflow-base-settings.d.ts.map +1 -0
  237. package/dist/services/workflow-base-settings.js +504 -0
  238. package/dist/services/workflow-base-settings.js.map +1 -0
  239. package/dist/services/workflow-condition-core.d.ts +48 -0
  240. package/dist/services/workflow-condition-core.d.ts.map +1 -0
  241. package/dist/services/workflow-condition-core.js +316 -0
  242. package/dist/services/workflow-condition-core.js.map +1 -0
  243. package/dist/services/workflow-context.d.ts +10 -0
  244. package/dist/services/workflow-context.d.ts.map +1 -0
  245. package/dist/services/workflow-context.js +15 -0
  246. package/dist/services/workflow-context.js.map +1 -0
  247. package/dist/services/workflow-export.d.ts +80 -0
  248. package/dist/services/workflow-export.d.ts.map +1 -0
  249. package/dist/services/workflow-export.js +150 -0
  250. package/dist/services/workflow-export.js.map +1 -0
  251. package/dist/services/workflow-field-permission-route.d.ts +75 -0
  252. package/dist/services/workflow-field-permission-route.d.ts.map +1 -0
  253. package/dist/services/workflow-field-permission-route.js +52 -0
  254. package/dist/services/workflow-field-permission-route.js.map +1 -0
  255. package/dist/services/workflow-field-permission.d.ts +18 -0
  256. package/dist/services/workflow-field-permission.d.ts.map +1 -0
  257. package/dist/services/workflow-field-permission.js +40 -0
  258. package/dist/services/workflow-field-permission.js.map +1 -0
  259. package/dist/services/workflow-function-settings.d.ts +31 -0
  260. package/dist/services/workflow-function-settings.d.ts.map +1 -0
  261. package/dist/services/workflow-function-settings.js +191 -0
  262. package/dist/services/workflow-function-settings.js.map +1 -0
  263. package/dist/services/workflow-node-layout.d.ts +11 -10
  264. package/dist/services/workflow-node-layout.d.ts.map +1 -1
  265. package/dist/services/workflow-node-layout.js +24 -62
  266. package/dist/services/workflow-node-layout.js.map +1 -1
  267. package/dist/services/workflow-operator-batch-condition.d.ts +23 -0
  268. package/dist/services/workflow-operator-batch-condition.d.ts.map +1 -0
  269. package/dist/services/workflow-operator-batch-condition.js +56 -0
  270. package/dist/services/workflow-operator-batch-condition.js.map +1 -0
  271. package/dist/services/workflow-sign-file-settings.d.ts +16 -0
  272. package/dist/services/workflow-sign-file-settings.d.ts.map +1 -0
  273. package/dist/services/workflow-sign-file-settings.js +80 -0
  274. package/dist/services/workflow-sign-file-settings.js.map +1 -0
  275. package/dist/services/workflow-submit-confirm.d.ts +14 -0
  276. package/dist/services/workflow-submit-confirm.d.ts.map +1 -0
  277. package/dist/services/workflow-submit-confirm.js +29 -0
  278. package/dist/services/workflow-submit-confirm.js.map +1 -0
  279. package/dist/services/workflow-tab-config.d.ts +3 -3
  280. package/dist/services/workflow-tab-config.d.ts.map +1 -1
  281. package/dist/services/workflow-tab-config.js +14 -12
  282. package/dist/services/workflow-tab-config.js.map +1 -1
  283. package/dist/services/workflow-tabs-editor.d.ts +28 -0
  284. package/dist/services/workflow-tabs-editor.d.ts.map +1 -0
  285. package/dist/services/workflow-tabs-editor.js +130 -0
  286. package/dist/services/workflow-tabs-editor.js.map +1 -0
  287. package/package.json +1 -1
  288. package/skill-docs/SKILL.md +155 -154
  289. package/skill-docs/_catalog.md +106 -97
  290. package/skill-docs/actionflows/references/components/document/GetDocumentInfo.md +17 -17
  291. package/skill-docs/actionflows/references/components/logic/LogicFlowSet.md +23 -17
  292. package/skill-docs/assets/form-template/style-templates-advanced-base-example.json +1420 -0
  293. package/skill-docs/assets/form-template/style-templates-advanced-base.css +33 -0
  294. package/skill-docs/assets/form-template/style-templates-advanced-blue-crystal-example.json +1094 -0
  295. package/skill-docs/assets/form-template/style-templates-advanced-document-example.json +1251 -0
  296. package/skill-docs/assets/form-template/style-templates-advanced-grid-example.json +39 -0
  297. package/skill-docs/assets/form-template/style-templates-advanced-page-example.json +38 -0
  298. package/skill-docs/assets/form-template/style-templates-advanced-placements-example.json +30 -0
  299. package/skill-docs/assets/form-template/style-templates-advanced-standard-example.json +53 -0
  300. package/skill-docs/assets/form-template/style-templates-advanced-structure-example.json +25 -0
  301. package/skill-docs/assets/form-template/style-templates-advanced-table-example.json +1420 -0
  302. package/skill-docs/references/code-block/guide-code-block.md +141 -0
  303. package/skill-docs/references/code-block/guide-layout-css.md +107 -0
  304. package/skill-docs/references/code-block/ref-controls.md +60 -0
  305. package/skill-docs/references/code-block/ref-coverage.md +32 -0
  306. package/skill-docs/references/code-block/ref-details.md +57 -0
  307. package/skill-docs/references/code-block/ref-events-validation.md +42 -0
  308. package/skill-docs/references/code-block/ref-foundations-fields.md +56 -0
  309. package/skill-docs/references/code-block/ref-recipes.md +164 -0
  310. package/skill-docs/references/code-block/ref-troubleshooting.md +49 -0
  311. package/skill-docs/references/code-block/ref-ui-global.md +47 -0
  312. package/skill-docs/references/common/guide-plan-template.md +168 -167
  313. package/skill-docs/references/common/map.md +2 -1
  314. package/skill-docs/references/common/ref-cli-commands.md +67 -22
  315. package/skill-docs/references/ebuilder-designer/guide-designer-factory.md +8 -4
  316. package/skill-docs/references/form/form-template/style-templates-advanced-css-guide.md +167 -0
  317. package/skill-docs/references/form/form-template/style-templates-advanced.md +315 -0
  318. package/skill-docs/references/form/form-template/style-templates-easy.md +55 -0
  319. package/skill-docs/references/form/form-template/style-templates-flow.md +27 -0
  320. package/skill-docs/references/form/form-template/style-templates.md +29 -0
  321. package/skill-docs/references/form/guide-browser-definition.md +148 -0
  322. package/skill-docs/references/form/guide-create-form.md +258 -250
  323. package/skill-docs/references/form/guide-form-archive-permission.md +29 -6
  324. package/skill-docs/references/form/guide-form-formula-functions.md +354 -354
  325. package/skill-docs/references/form/guide-form-layout-incremental.md +28 -0
  326. package/skill-docs/references/form/guide-form-layout-planning.md +11 -0
  327. package/skill-docs/references/form/guide-form-layout-source.md +4 -0
  328. package/skill-docs/references/form/guide-form-linkage.md +295 -259
  329. package/skill-docs/references/form/guide-form-physical-table.md +2 -0
  330. package/skill-docs/references/form/guide-form-view.md +3 -0
  331. package/skill-docs/references/form/ref-form-fields.md +301 -293
  332. package/skill-docs/references/form/ref-list-filter-date-params.md +83 -0
  333. package/skill-docs/references/menu/system-menus.md +12 -0
  334. package/skill-docs/references/workflow/condition-core-contract.md +63 -0
  335. package/skill-docs/references/workflow/guide-base-auth-share-remind.md +126 -0
  336. package/skill-docs/references/workflow/guide-function-settings.md +55 -0
  337. package/skill-docs/references/workflow/guide-workflow-condition.md +476 -447
  338. package/skill-docs/references/workflow/guide-workflow-node-layout.md +6 -0
  339. package/skill-docs/references/workflow/guide-workflow.md +630 -527
  340. package/skill-docs/references/form/style-templates.md +0 -97
@@ -1,527 +1,630 @@
1
- # 流程表单指南
2
-
3
- ## EB 流程与原生工作流程的选择
4
-
5
- - 流程体系分为 EB 流程和原生工作流程;公文流程是原生工作流程的特殊类型。
6
- - 固定、自由是流程的流转模式,各类流程均可选择。
7
- - 默认使用 EB 表单和应用内的 `workflow create`。
8
- - 需求明确要求“原生流程表单”“工作流程”或“流程中心建流程”时,使用 `workflow create-workflow`;其表单使用 `wf-form` 命令管理。
9
- - EB 与原生流程表单的资源 ID、接口前缀和布局操作不同,不可混用。EB 应用也不能直接选择表单引擎创建的原生表单。
10
- - 原生流程表单的字段、明细、布局、字段属性和分组分别使用 `wf-form add-field`、`add-detail-table`、`layout init|add|delete`、`field-prop`、`group`;完整参数见 `references/common/ref-cli-commands.md`。
11
- - 平台上各类流程都可选择固定或自由模式。当前 CLI 中,`workflow create-workflow --is-free 0|1` 已支持原生工作流程(含公文)的模式选择;`workflow create` 目前只按固定模式创建 EB 流程,尚未暴露自由模式参数。这是 CLI 能力边界,不代表 EB 流程不支持自由模式。
12
- - 已有数据的字段可能无法删除。删除失败时保留字段定义并从布局移除;CLI 当前不提供 `wf-form delete-field`。
13
-
14
- ### 公文流程(原生工作流程的可选模式)
15
-
16
- 需求明确为“公文流程、公文审批、收文、发文”时,在 `workflow create-workflow` 上增加 `--odoc`。公文流程与普通原生工作流程共用表单、节点、出口和操作者机制;差异是创建及查询时使用 `bridgeService=odoc`,并拥有公文设置、正文等专属配置。创建方式和公文专属能力统一读取 [公文流程指南](guide-workflow-odoc.md),不要用 `workflowType` 代替公文模式。
17
-
18
- ### 权责表方式
19
-
20
- 需求明确要求按权责表搭建时,流程表单来源仍按本指南选择,搭建方式切换为权责表。可以随流程新建权责表,也可以复用独立权责表;独立表的变量管理、分支场景、节点路径以及复用时的字段映射统一读取 [权责表指南](guide-workflow-auth-resp.md)。
21
-
22
- ### 原生工作流程及表单创建顺序
23
-
24
- 仅在需求明确要求原生流程表单、工作流程或流程中心时使用本节。`workflow create-workflow` 返回的 `workflowId` 用于节点和流程设置,`formId` 用于全部 `wf-form` 命令;不要传 EB 表单的 objId 或 appId。
25
-
26
- #### 方式一:随工作流程自建流程表单
27
-
28
- ```bash
29
- e10-cli workflow create-workflow "费用报销流程" --layout FLOW
30
- # 团队流程默认自动取创建者机构;多机构场景可显式加 --sub-company <机构ID>
31
- # 表格式流程表单改用 --layout EXCEL;自由流程加 --is-free 1
32
- ```
33
-
34
- 不传 `--form-id` 为自建模式。FLOW 直接创建流程及其表单;EXCEL 会先创建表格式流程表单再绑定,最终都会返回后续使用的 `formId`。
35
-
36
- #### 方式二:绑定已有原生流程表单
37
-
38
- ```bash
39
- e10-cli workflow create-workflow "费用报销流程" --form-id <已有formId>
40
- ```
41
-
42
- 绑定模式沿用已有表单自身的布局类型,`--layout` 不负责切换已有表单布局。
43
-
44
- #### 建表与布局配置
45
-
46
- ```bash
47
- # 1. 记录并检查创建命令返回的 formId
48
- e10-cli wf-form read <formId>
49
-
50
- # 2. 添加全部主表字段
51
- e10-cli wf-form add-field <formId> "申请人" Employee
52
- e10-cli wf-form add-field <formId> "报销金额" Number --precision 2
53
-
54
- # 3. 添加明细表;记录返回的 subFormId,再添加其余明细字段
55
- e10-cli wf-form add-detail-table <formId> "费用明细" "费用类型"
56
- e10-cli wf-form add-field <formId> "费用金额" Number --sub-form-id <subFormId> --precision 2
57
-
58
- # 4. 按需求配置选项、公式、联动、查重和值带出
59
- e10-cli wf-form field-options <formId> <fieldId> --options '[{"name":"差旅费"}]'
60
- e10-cli wf-form formula set <formId> --expression "..." --target <fieldId>
61
-
62
- # 5. 字段全部创建后配置分组和显示属性
63
- e10-cli wf-form group <formId> --groups '{"基本信息":["申请人","报销金额"]}'
64
- e10-cli wf-form field-prop <formId> --required 申请人 报销金额 --readonly 流程编号 --single-row 备注
65
-
66
- # 6. 回读字段与布局结果;只有需求明确要求多套布局时才 layout add
67
- e10-cli wf-form read <formId>
68
- ```
69
-
70
- 字段应先建全,再统一做分组和字段属性,避免反复重建布局。`add-field`、`group`、`field-prop` 内部均会按各自职责保存或重建布局,通常不需要每加一个字段都手工执行 `layout init`;只有明确需要重建默认布局时才单独使用它。多套布局用 `layout add`,删除指定附加布局用 `layout delete`。
71
-
72
- ## 流程页面 URL
73
-
74
- 提交流程的页面后缀是 `/sp/workflow/flowpage/create/流程id`:
75
-
76
- ```
77
- /sp/workflow/flowpage/create/1281910260426555393
78
- ```
79
-
80
- ---
81
-
82
- ## URL 传参预填
83
-
84
- 流程页面支持通过 URL query string 传参来预填表单字段。参数名使用**字段 ID**,参数值为要预填的内容。
85
-
86
- ```js
87
- var WORKFLOW_ID = '1281935012370612224';
88
- var workflowUrl = publicUrl + '/sp/workflow/flowpage/create/' + WORKFLOW_ID;
89
-
90
- // 根据上下文拼接预填参数
91
- if (selectedCell) {
92
- var params = [];
93
- if (selectedCell.roomId) {
94
- params.push(F.roomNo + '=' + encodeURIComponent(selectedCell.roomId));
95
- }
96
- if (selectedCell.date) {
97
- params.push(F.bookingDate + '=' + encodeURIComponent(selectedCell.date));
98
- }
99
- if (params.length > 0) {
100
- workflowUrl = workflowUrl + '?' + params.join('&');
101
- }
102
- }
103
- // 最终 URL 示例:
104
- // /sp/workflow/flowpage/create/1281935012370612224?1281934337846132742=1356890123456789&1281934337846132739=2026-06-17
105
- ```
106
-
107
- ---
108
-
109
- ## 注意事项
110
-
111
- | 规则 | 说明 |
112
- |------|------|
113
- | 参数名 | 用表单字段 ID(纯数字字符串) |
114
- | 参数值 | 需要 `encodeURIComponent` |
115
- | Select 字段 | 传参时用**选项 ID**(`valueKey`),不能传显示名称 |
116
- | 参数名不生效 | 可能需要换成流程表单里定义的字段标识(短码),让用户确认 |
117
-
118
- ---
119
-
120
- ## CLI 流程管理
121
-
122
- ### 创建流程
123
-
124
- ```bash
125
- e10-cli workflow create <appId> <formObjId> <name> [desc]
126
- # 自动设置所有人可发起;默认不加菜单,要入口加 --menu(「发起菜单」LAYOUT,指向表单新建页,点开即触发流程)
127
- # 漏加可用 `e10-cli menu add-start <appId> <formObjId>` 补
128
- ```
129
-
130
- ### 查看节点
131
-
132
- ```bash
133
- e10-cli workflow nodes <workflowId>
134
- # 输出节点名称、类型(发起/审批/归档)、操作者、连线关系
135
- ```
136
-
137
- ### 设置审批人
138
-
139
- ```bash
140
- # 指定人
141
- e10-cli workflow set-operator <workflowId> <nodeId> 张三
142
- # 指定角色(名称精确优先;子串命中多个时会列出候选,要求改用完整名称或角色 ID)
143
- e10-cli workflow set-operator <workflowId> <nodeId> 财务主管 --type role
144
- # 发起人上级
145
- e10-cli workflow set-operator <workflowId> <nodeId> --type superior
146
- # 发起人上级"逐级审批"(直接上级按顺序逐个处理):
147
- e10-cli workflow set-operator <workflowId> <nodeId> --type superior --sign-order 依次处理
148
- # 上级/本人组支持 --sign-order:会签/非会签/竞签/依次处理(逐级)/抄送/抄送需批注
149
- # "所有上级"(整条上级链,如 结束归档:抄送发起节点所有上级需批注):
150
- e10-cli workflow set-operator <workflowId> <nodeId> --type initiator # ① 审批/处理组=发起人本人
151
- e10-cli workflow set-operator <workflowId> <nodeId> --type superior --superior-scope 所有上级 --sign-order 抄送需批注 --append # ② 追加抄送组
152
- # 所有人
153
- e10-cli workflow set-operator <workflowId> <nodeId> --type all
154
- # 自由选择(发起时自己选)
155
- e10-cli workflow set-operator <workflowId> <nodeId> --type free
156
- # 上一节点操作者
157
- e10-cli workflow set-operator <workflowId> <nodeId> --type prev-node
158
- # 指定部门(含下级)
159
- e10-cli workflow set-operator <workflowId> <nodeId> 开发部 --type dept
160
- # 多部门 + 跨部门会签、单个部门内非会签(如"营销部,财务部,市场部 会签、部门内非会签"):
161
- e10-cli workflow set-operator <workflowId> <nodeId> "营销部,财务部,市场部" --type dept --dept-scope 本部门 --org-non-sign
162
- # 指定岗位
163
- e10-cli workflow set-operator <workflowId> <nodeId> 财务经理 --type position
164
- # 岗位限定"发起人所在部门"(如 部门主管/财务经理 只在本部门内找人):
165
- e10-cli workflow set-operator <workflowId> <nodeId> 部门主管 --type position --pos-scope 发起人同部门 --sign-order 非会签
166
- # 签署顺序 + 批次
167
- e10-cli workflow set-operator <workflowId> <nodeId> 张三 --sign-order 竞签 --orders 0.10
168
- # 组内多操作者(一个节点配多人,任一人或全部审批)
169
- e10-cli workflow set-operator <workflowId> <nodeId> "区域经理,部门领导" --type role --sign-order 竞签
170
- ```
171
-
172
- **修改已有操作者的签署顺序(会签→非会签/竞签/依次/抄送),不删掉重建**:
173
-
174
- ```bash
175
- e10-cli workflow operator-sign <workflowId> <nodeId> --sign-order 非会签
176
- e10-cli workflow operator-sign <workflowId> <nodeId> --sign-order 竞签 --group 指定角色
177
- ```
178
-
179
- > ⚠️ `set-operator` 建的是**会签**;要改成非会签/竞签/依次/抄送,用 `operator-sign`(更新旧组,不重建,避免破坏关联)。`--group` 指定组名可只改某组。
180
-
181
- > 🚫 **操作者配置硬规则(防"兜底成具体人员"错配)**:需求里操作者是「角色 / 部门 / 岗位 / 发起人上级 / 本人 / 表单字段 / 矩阵 / 自由选择 / 所有人」时,**必须用对应 `--type`**(role / dept / position / superior / initiator / form / matrix / free / all),并按需求的关键词(角色名/部门名/岗位名/字段名…)配置;**名称解析不到就停下报告或确认,绝不退而求其次去指定某个具体人员顶替**(那会搭错组织权限,典型症状:节点操作者成了某个无关的具体人员)。只有需求明确写"指定某人/张三"时才用默认 `user`。配完用 `workflow nodes` / 节点操作者回读核对类型与需求一致。
182
- >
183
- > 🚫 **抄送组不能是节点唯一操作者**:抄送(含需批注)不产生审批,一个节点必须至少有 1 个审批/处理组;"某人审批 + 抄送xxx" = 先 `set-operator` 建审批组,再 `--append` 追加抄送组(如上方"结束归档"例子)。
184
-
185
- **签署方式(--sign-order)概念**——决定"多个审批人之间怎么算通过":
186
-
187
- | 签署方式 | 含义 |
188
- |---------|------|
189
- | **会签**(默认) | 选择的多人**必须都审批通过**才继续流转 |
190
- | **非会签** | 选择的多人中**只要一个人审批通过**就流转下去 |
191
- | **竞签** | 非会签的一种:多人同时可见、**先到先审**,谁先提交谁生效(其他人无需再审) |
192
- | **依次处理** | 按人员选择顺序逐个审批,**全部审完**才流转 |
193
- | **抄送** | 抄送对象,**不影响流转**;需批注的抄送对象批注后转入已办,不需批注的查看即转入已办 |
194
-
195
- > **「A 或 B 审批」= 一个节点多人 + 竞签/非会签**,不是物理分两条线。比如"区域经理 或 部门领导审核":`set-operator <wf> <node> "区域经理,部门领导" --type role --sign-order 竞签`,图上只有一根线。**需求里出现"或/任一人"的审批,优先用竞签/非会签**,只有按条件真正分流(不同分支走不同流程)才拆节点。
196
- >
197
- > **一个节点多人**:keyword 用逗号分隔(`"角色1,角色2"` 或 `"张三,李四"`)。`set-operator` 每次全量重建该节点操作者组(先清空旧组再新建),重复设置不会堆积。
198
- # 矩阵对应(查矩阵表动态获取审批人)
199
- e10-cli workflow set-operator <workflowId> <nodeId> --type matrix \
200
- --matrix-id <矩阵ID> --value-config-id <值字段configId> \
201
- --matrix-rule "<条件configId>:1:1" \
202
- --batch-condition "(申请人 等于 '张三')"
203
- # matrix-rule 格式: 条件configId:来源type:operate(operate可省略)
204
- # type: 1=发起人部门/分部,3=当前节点未操作者部门/分部,5=当前操作人部门/分部;或真实表单字段ID。
205
- # operate: 部门1/2/3/49/67,分部4/5/6/50;省略为本级(部门1,分部4)。
206
- # 同义范围按条件列类型转换:1↔4、2↔5、3↔6、49↔50;分部不支持67。
207
- # 也支持self/children/parents/upward。旧第4段仍忽略,不能用它传组织ID。
208
- # 表单字段/指定组织推荐 --matrix-rules JSON或@文件,与 --matrix-rule 互斥。
209
- # JSON示例(所有ID替换为真实值;ID用字符串以免精度丢失):
210
- # [{"sourceField":"条件列ID","type":"field","targetField":"表单字段ID","targetFieldCN":"申请分部","operate":"self"}]
211
- # [{"sourceField":"条件列ID","type":"0","content":["部门或分部ID"],"contentCN":"组织名称","operate":"self"}]
212
- # sourceField为矩阵条件列configId;部门/分部由该列元数据自动识别。
213
- # type=field(也接受type=2+targetField)在请求中转换为真实字段ID,后端落库type=2、targetField=真实字段ID。
214
- # 不要把裸type=2当成字段ID;指定组织type=0必须提供content(ID逗号串或数组)。
215
- # 参数校验完成后才清理旧组;--append保留旧组。仅支持部门/分部条件,复杂自定义条件仍需扩展。
216
- # 表单相关人员(从表单数据中动态获取审批人)
217
- e10-cli workflow set-operator <workflowId> <nodeId> --type form \
218
- --source <表单ID> --target <人员字段ID>
219
- ```
220
-
221
- ### 节点签字意见(必填、签批签名、显示、反馈)
222
-
223
- ```bash
224
- e10-cli workflow node sign <workflowId> <nodeId> # 查看全部签字意见配置
225
- e10-cli workflow node sign <wf> <node> --all-required # 全部操作类型意见必填
226
- e10-cli workflow node sign <wf> <node> --none-required # 全部不必填
227
- e10-cli workflow node sign <wf> <node> --select "退回,加签" # 指定操作类型意见必填
228
- ```
229
-
230
- > 「退回时意见必填」= `--select 退回`(如:上级审核节点退回时要求填写意见)。操作类型以该节点可选范围为准(不同节点类型可操作类型不同)。
231
-
232
- 新增 `--data` 局部修改隐藏输入框、必须签批签名、意见列表类型/范围、隐藏空意见及反馈。拟签使用 `workflow draft-opinion`;节点转发使用 `workflow node forward-setting`。完整参数和话术见 [拟签、转发与签字意见指南](guide-opinion-settings.md)。
233
-
234
-
235
- ### 节点提交校验
236
-
237
- ```bash
238
- e10-cli workflow node validate <workflowId> <nodeId> --view # 查看校验状态
239
- e10-cli workflow node validate <wf> <node> --name "一致性校验" \
240
- --rule "行程明细.行程开始时间 等于 出差开始日期" # 设置校验:行程开始时间=出差开始日期
241
- e10-cli workflow node validate <wf> <node> --name "报销人校验" --rule "报销人 不为空" \
242
- --pass-tip "报销人已填写" --fail-tip "请选择报销人" --on-fail 禁止提交
243
- e10-cli workflow node validate <wf> <node> --name "多条件组合" \
244
- --rules-json @node-check.json --on-fail 仅做提醒
245
- e10-cli workflow node validate <wf> <node> --disable # 关闭校验
246
- ```
247
-
248
- `--rule` 支持字段对字段、字段对常量及 `为空`/`不为空`;明细字段可加 `:任一`/`:所有`。同一规则内多条 `--rule` 为 AND;同名重新执行仅替换同名规则,其他规则保留。节点多规则关系用 `--relation AND|OR`,不合规处理用 `--on-fail 禁止提交|仅做提醒`(平台码值分别为 1、2)。`--pass-tip`/`--fail-tip` 设置每条规则的合规/不合规提示语,可用普通文字或平台字段标签、字段值占位符。`--pass-popup on|off`/`--fail-popup on|off` 控制节点级结果显示。用 `--view` 回读。
249
-
250
- 组合条件使用 `--rules-json '<JSON>'` 或 `--rules-json @node-check.json`;组含 `relation`(AND/OR)和 `rules`,叶子含 `source`(form/system)、`field`、`op`、`value`,明细可加 `detail`(任一/所有),数值上限可加 `upperOp`、`upperValue`:
251
-
252
- ```json
253
- {"relation":"AND","rules":[
254
- {"field":"费用明细.发票金额","detail":"任一","op":"大于","value":1,"upperOp":"小于等于","upperValue":100},
255
- {"relation":"OR","rules":[
256
- {"source":"system","field":"发起人分部","op":"属于","value":"泛微北京"},
257
- {"source":"system","field":"发起人","op":"属于","value":"卢顾萱"}
258
- ]}
259
- ]}
260
- ```
261
-
262
- 组织或人员重名时,`value` 使用浏览器返回的 `{ "id": "...", "content": "..." }` 指定对象。按解析条件、保存规则和提示语、保存不合规处理、启用节点校验的顺序执行。
263
-
264
- **表单相关人员**(`--type form`)从指定表单的 Employee 字段动态获取审批人,支持筛选条件:
265
-
266
- ```bash
267
- # 无筛选:取表单中所有员工
268
- e10-cli workflow set-operator <wf> <nodeId> --type form \
269
- --source 1294600110549819401 --target 1294600110549819393
270
-
271
- # 带筛选:人员级别 > 100
272
- e10-cli workflow set-operator <wf> <nodeId> --type form \
273
- --source 1294600110549819401 --target 1294600110549819393 \
274
- --condition '{"fieldId":"1294600110549819396","fieldType":"Number","fieldName":"人员级别","func":"gt","value":"100"}'
275
-
276
- # 筛选值引用表单字段:申请人 == 创建者(valueFieldId 在流程表单中查找)
277
- e10-cli workflow set-operator <wf> <nodeId> --type form \
278
- --source 1294602202274390029 --target 1294602202274390020 \
279
- --workflow-form 1294601678154162216 \
280
- --condition '{"fieldId":"1294602202274390020","fieldType":"Employee","fieldName":"申请人","func":"eq","valueFieldId":"2"}'
281
-
282
- # 或签
283
- e10-cli workflow set-operator <wf> <nodeId> --type form \
284
- --source 1294600110549819401 --target 1294600110549819393 \
285
- --sign-order 或签
286
- ```
287
-
288
- > `--condition` 格式:`{"fieldId":"字段ID","fieldType":"字段类型","fieldName":"字段名","func":"比较符","value":"固定值"}`。func 支持:`gt`(大于)、`lt`(小于)、`eq`(等于)、`gte`(≥)、`lte`(≤)、`like`(包含)。用 `valueFieldId` 代替 `value` 表示值引用了表单字段,需同时指定 `--workflow-form <流程表单objId>` 告诉 CLI 在哪个表单里找引用字段。`--sign-order` 默认 `会签`。
289
-
290
- ### 添加节点
291
-
292
- ```bash
293
- e10-cli workflow add-node <workflowId> <type> "节点名称"
294
- # type: 0=发起 1=审批 2=确认/会签 3=归档 5=投递 7=自动处理 8=等待
295
- # forkstart=分流点 forkend=合流点 forkmiddle=分流中间点
296
- # 结束节点 = 归档节点(type=3);流程末尾的归档节点就是「结束」,二者是同一个节点类型
297
- # --node-attr: 0=一般(默认) 1=分流点 2=分流中间点 3=合流点
298
- ```
299
-
300
- > **分流节点不能做审批**:`forkstart` / `forkmiddle` / `forkend`(nodeAttr 1/2/3)是**纯路由节点**,配不了审批操作者——节点一旦被标成分流/合流点,`set-operator` 就设不上审批人。分流职责和审批职责必须分开:分流节点只负责分叉/合流,审批人放在各分支的**审批节点(type=1)**上,即 `forkstart → 各分支审批节点(type=1) → forkend`。
301
-
302
- ### 等待节点(流程机器人,type=8)
303
-
304
- 等待节点在平台叫「流程机器人」(nodeType=8),配置走 `workflow node-robot`:
305
-
306
- ```bash
307
- e10-cli workflow node-robot get <wf> <nodeId> # 查看当前配置
308
- e10-cli workflow node-robot set <wf> <nodeId> --wait-value 30 # 设置等待时长
309
- e10-cli workflow node-robot set <wf> <nodeId> --processing-interval 5 # 处理间隔
310
- e10-cli workflow node-robot set <wf> <nodeId> --remark "等待审批结果" # 备注(多语言用 set-remark)
311
- ```
312
-
313
- > ⚠️ **等待时长 `--wait-value` 的单位是「分钟」,不是小时/天**。`--wait-value 30` = 30 分钟;`--processing-interval` 处理间隔同为分钟。填错单位会导致流程等待时长差 24/60 倍。`--wait-type 1` = 指定时长;`waitTimeValue=0` 是默认值(未配置指定时长)。
314
-
315
- ### 重命名节点
316
-
317
- ```bash
318
- e10-cli workflow rename-node <workflowId> <nodeId> "新名称"
319
- ```
320
-
321
- ### 添加连线(节点→节点)
322
-
323
- 一键添加连线:
324
- ```bash
325
- e10-cli workflow add-link <workflowId> <fromNodeId> <toNodeId> "标签"
326
- e10-cli workflow add-link <workflowId> <fromNodeId> <toNodeId> "退回" --reject
327
- e10-cli workflow add-link <workflowId> <fromNodeId> <toNodeId> "主线路" --default
328
- ```
329
-
330
- 批量添加连线(出口表混着退回线和默认出口时用这个):
331
- ```bash
332
- e10-cli workflow add-links <workflowId> @links.json
333
- # links.json:
334
- # [
335
- # {"from":"拟稿","to":"套红", "label":"拟稿 至 套红", "default":true},
336
- # {"from":"部门经理审稿","to":"拟稿", "label":"部门经理审稿 退回 拟稿","reject":true}
337
- # ]
338
- ```
339
-
340
- > **退回 / 默认出口逐条给**:`reject` / `default` 写在每条连线上;命令行上的 `--reject` / `--default`
341
- > 是给整批兜底的默认值,逐条给的值优先于它。
342
- >
343
- > **默认出口会自动让位**:指定某条为默认出口时,同一源节点上原有的默认出口会被自动取消,
344
- > 保证一个源节点只有一条默认出口。同一批里给同一源节点指定了两条默认出口会直接报错,
345
- > 不会静默留下两条。
346
- >
347
- > **多条连线用 `add-links`**:`add-link` 内部 read→改→save,并行的会互相覆盖。`add-links` 一次把整批
348
- > 拼好、一次保存,不会丢数据。不要用 `&` 或 `parallel` 并跑 add-link。
349
- >
350
- > 保存后 CLI 会**回读比对**:新连线的退回/默认标志与让位结果都对得上才算成功,
351
- > 对不上会直接报错退出,不会因为服务端回了「保存成功」就放过。
352
-
353
- ### 删除连线
354
-
355
- ```bash
356
- # 先用 workflow nodes --json 获取连线的 linkId
357
- e10-cli workflow nodes <workflowId> --json
358
- # 返回的 links 数组每条都有 linkId,可直接删除
359
- e10-cli workflow delete-link <workflowId> <linkId>
360
- # 支持一次删多条
361
- e10-cli workflow delete-link <workflowId> <linkId1> <linkId2>
362
- ```
363
-
364
- > **注意**:`workflow nodes --json` 返回的每条连线都带 `linkId`,用它来删除,不要用 nodeId。
365
-
366
- ### 查看出口列表
367
-
368
- ```bash
369
- e10-cli workflow link-list <workflowId>
370
- # 显示源节点→目标节点、默认出口[默认]、退回出口[退回]、条件状态[有条件]
371
- # --node-id 过滤单个源节点的出口
372
- e10-cli workflow link-list <workflowId> --node-id <nodeId>
373
- ```
374
-
375
- ### 修改/删除出口(列表方式)
376
-
377
- ```bash
378
- # 先获取当前出口列表作为基线
379
- e10-cli workflow link-list <workflowId> --json > links.json
380
- # 修改后保存
381
- e10-cli workflow link-save <workflowId> @links.json
382
- # 删除指定出口
383
- e10-cli workflow link-save <workflowId> @links.json --delete-rows "linkId1,linkId2"
384
- ```
385
-
386
- ### 查看节点列表(含分流/合流属性)
387
-
388
- ```bash
389
- e10-cli workflow nodes <workflowId> --mode list
390
- # 显示 nodeAttr(0=一般/1=分流点/2=分流中间点/3=合流点)+ mergeType(全部分支/指定分支/分支数/比例)
391
- ```
392
-
393
- ### 全流程搜索(不依赖 appId)
394
-
395
- ```bash
396
- e10-cli workflow search --name "费用报销"
397
- e10-cli workflow search --id <workflowId>
398
- e10-cli workflow search --name "审批" --belong 1 --page-size 50
399
- ```
400
-
401
- ### 节点操作菜单
402
-
403
- ```bash
404
- # 查看菜单
405
- e10-cli workflow node menu <workflowId> <nodeId>
406
- # 切换菜单启用状态
407
- e10-cli workflow node menu <workflowId> <nodeId> --toggle <menuId>
408
- ```
409
-
410
- ### 节点退回设置
411
-
412
- ```bash
413
- # 查看
414
- e10-cli workflow node reject <workflowId> <nodeId>
415
- # 修改
416
- e10-cli workflow node reject <workflowId> <nodeId> \
417
- --remind 1 --type 1 --checked-node 1 --submit-type 1
418
- ```
419
-
420
- ### 节点超时处理
421
-
422
- ```bash
423
- # 查看
424
- e10-cli workflow node timeout <workflowId> <nodeId>
425
- # 新增超时规则(指定时间 48h,下一操作者,超时前 2h 提醒)
426
- e10-cli workflow node timeout <workflowId> <nodeId> \
427
- --time-type 1 --time-value 48 --flow-type 1 --remind-type 0 --remind-hours 2
428
- ```
429
-
430
- ### 工作流维度设置
431
-
432
- ```bash
433
- # 提交确认
434
- e10-cli workflow setting submit <workflowId> --confirm 1
435
- # 签字意见
436
- e10-cli workflow setting sign <workflowId> --show-order 1
437
- # 评论
438
- e10-cli workflow setting comment <workflowId> --enable 1
439
- # 批量操作
440
- e10-cli workflow setting batch <workflowId> --enable-batch 1 --enable-reject 1
441
- # 自动处理
442
- e10-cli workflow setting auto <workflowId> --enable 1 --way 0
443
- # 其他设置
444
- e10-cli workflow setting other <workflowId> --message-op 1 --auto-save 1
445
- # 流程标题规则(保存/提交后生成标题)
446
- e10-cli workflow setting title <workflowId> # 查看可用变量
447
- e10-cli workflow setting title <wf> --rule "工作流名称|发起人|提交日期" --sep "-" # 标题=流程名-发起人-提交日期
448
- e10-cli workflow setting title <wf> --disable # 关闭自动生成标题
449
- ```
450
-
451
- > **流程标题**:`--rule` 用竖线分隔字段名(可用 `工作流名称`/`发起人`/`提交日期`/`流程编号` 等系统字段或任意表单字段名),`--sep` 指定分隔符(默认 `-`)。CLI 自动把字段名解析成占位编码(如 `工作流名称=-100`)并启用 `subtitleType` 开关。
452
-
453
- ### 高级设置
454
-
455
- ```bash
456
- # 流程存档
457
- e10-cli workflow advanced doc <workflowId> --enable 1 --doc-types "0,1"
458
- # 定时触发(每日 09:00)
459
- e10-cli workflow advanced schedule <workflowId> \
460
- --enable 1 --frequency '{"item1":1,"item2":1}' --time "09:00:00" --weekday-only 1
461
- # 定时触发人员范围
462
- e10-cli workflow advanced schedule-range <workflowId> --list
463
- ```
464
-
465
- ### 高级设置 → 功能管理
466
-
467
- 撤回 `withdraw`、加审 `add-operator`、减审 `minus-operator`、接收人范围 `receiver-range`、转发/传阅/抄送收回 `forward-circulate-back`,每组提供 `get/create/update`。读取默认值后新增、读取现有值后局部修改,并回读核对。接收人范围统一支持加审规则(`--add-operator-id`)、指定流转通用范围(`--scene assign-flow --node-id`)、单独目标节点范围(`--scene assign-flow-target --node-id --target-node-id`);限普通模式。详见 [功能管理命令、参数与自然语言示例](guide-function-management.md)。
468
-
469
- ### 整体重写流程图(save-layout)
470
-
471
- 大规模调整节点连线时,构造完整 XML → 一次性保存覆盖当前布局:
472
-
473
- ```bash
474
- # 1. 将 XML 文件保存为流程布局(覆盖当前)
475
- e10-cli workflow save-layout <workflowId> @layout.xml
476
-
477
- # 2. 构造完整 XML(浏览器 mxGraph 格式)
478
- ```
479
-
480
- XML 格式示例(浏览器 mxGraph 格式:节点 cell id 用纯数字,带真实 `nodeId`;连线带真实 `linkId`,`source`/`target` 引用节点的数字 id):
481
- ```xml
482
- <mxGraphModel grid="0" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1331" pageHeight="888" background="#ffffff"><root>
483
- <mxCell id="0"/><mxCell id="1" parent="0"/>
484
- <!-- 节点:vertex="1",带 nodeId -->
485
- <mxCell id="2" value="发起节点" style="rounded=1;whiteSpace=wrap;html=1;resizable=1;rotatable=0;arcSize=10;fillColor=#5D9CEC;strokeColor=#5D9CEC;" vertex="1" nodeType="0" nodeId="节点ID" operatorNameStr=" " parent="1"><mxGeometry x="465" y="80" width="170" height="64" as="geometry"/></mxCell>
486
- <mxCell id="3" value="审批节点" style="..." vertex="1" nodeType="1" nodeId="节点ID" parent="1"><mxGeometry x="465" y="220" width="170" height="64" as="geometry"/></mxCell>
487
- <!-- 连线:edge="1",带 linkId、source、target -->
488
- <mxCell id="6" value="发起 至 审批" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#5D9CEC;" edge="1" linkId="连线ID" isDefault="0" isReject="0" orderId="0.0" source="2" target="3" parent="1"><mxGeometry relative="1" as="geometry"/></mxCell>
489
- </root></mxGraphModel>
490
- ```
491
-
492
- **关键规则**:
493
- - 节点的 `id` 用数字(2, 3, 4...),连线的 `source`/`target` 引用节点的 `id`
494
- - 连线的 `linkId` 是服务端分配的唯一标识,删除连线用这个
495
- - 保存:`e10-cli workflow save-layout <workflowId> @修改后的.xml`
496
- - **务必保持浏览器格式**:服务器 saveLayout 只认纯数字 cell id。`getXml` 输出的 `node_xxx`/`link_xxx` 格式直接回传会解析失败(节点被判为 null/已删除)
497
-
498
- ### 节点自动排版(auto-layout)
499
-
500
- CLI 搭建的流程(add-node 加节点)节点通常挤在一列,用自动排版重排:
501
-
502
- ```bash
503
- # 默认左右分层(发起在最左)
504
- e10-cli workflow auto-layout <workflowId>
505
-
506
- # 上下排布(发起在最顶,平台连线默认纵向)
507
- e10-cli workflow auto-layout <workflowId> --direction ttb
508
-
509
- # 只算不打回(看分层结果)
510
- e10-cli workflow auto-layout <workflowId> --dry-run
511
- ```
512
-
513
- **算法**:读 getXml → 按连线最长路径分层(忽略退回线)→ 全量重排节点 mxGeometry → saveLayout 回写 → 回读验证。分支(forkstart→分支们→forkend)自然融入分层,同层节点垂直排开。只改节点坐标,连线自动正交路由。
514
-
515
- **什么时候跑**:`create` / `create-workflow` 建流程时自动跑一次,**之后不再自动跑**。所以**加/删节点、加/删连线之后要补跑一次**(`add-node` 只把新节点丢在图的边上,不会融进流程线)。`rename-node` / `set-operator` / 条件与动作配置不改拓扑,不用跑。
516
-
517
- 两个边界要知道:
518
-
519
- - **会覆盖手工摆放**。它是整图重排,人在浏览器里拖过的坐标一律按算法结果重置。手工调过就别再跑,或跑完重新调。
520
- - **不保证消除交叉**。分层算法只对「跨 ≥2 层的长跳线」把**目标**节点下移一档;跨层连线的水平段仍可能穿过中间层节点。**跑完看一眼流程图**,有交叉只能手工调坐标(或试 `--direction ttb` 换个走线方向)。
521
-
522
- ---
523
-
524
- ## 相关指南
525
-
526
- - **分支条件 / 出口条件 / 条件 JSON** → `workflow/guide-workflow-condition.md`
527
- - **动作流(跨表单写入)/ 提交事件 / 角色管理** → `workflow/guide-workflow-action.md`
1
+ # 流程表单指南
2
+
3
+ ## EB 流程与原生工作流程的选择
4
+
5
+ - 流程体系分为 EB 流程和原生工作流程;公文流程是原生工作流程的特殊类型。
6
+ - 固定、自由是流程的流转模式,各类流程均可选择。
7
+ - 默认使用 EB 表单和应用内的 `workflow create`。
8
+ - 需求明确要求“原生流程表单”“工作流程”或“流程中心建流程”时,使用 `workflow create-workflow`;其表单使用 `wf-form` 命令管理。
9
+ - EB 与原生流程表单的资源 ID、接口前缀和布局操作不同,不可混用。EB 应用也不能直接选择表单引擎创建的原生表单。
10
+ - 原生流程表单的字段、明细、布局、字段属性和分组分别使用 `wf-form add-field`、`add-detail-table`、`layout init|add|delete`、`field-prop`、`group`;完整参数见 `references/common/ref-cli-commands.md`。
11
+ - 平台上各类流程都可选择固定或自由模式。当前 CLI 中,`workflow create-workflow --is-free 0|1` 已支持原生工作流程(含公文)的模式选择;`workflow create` 目前只按固定模式创建 EB 流程,尚未暴露自由模式参数。这是 CLI 能力边界,不代表 EB 流程不支持自由模式。
12
+ - 已有数据的字段可能无法删除。删除失败时保留字段定义并从布局移除;CLI 当前不提供 `wf-form delete-field`。
13
+
14
+ ### 公文流程(原生工作流程的可选模式)
15
+
16
+ 需求明确为“公文流程、公文审批、收文、发文”时,在 `workflow create-workflow` 上增加 `--odoc`。公文流程与普通原生工作流程共用表单、节点、出口和操作者机制;差异是创建及查询时使用 `bridgeService=odoc`,并拥有公文设置、正文等专属配置。创建方式和公文专属能力统一读取 [公文流程指南](guide-workflow-odoc.md),不要用 `workflowType` 代替公文模式。
17
+
18
+ ### 权责表方式
19
+
20
+ 需求明确要求按权责表搭建时,流程表单来源仍按本指南选择,搭建方式切换为权责表。可以随流程新建权责表,也可以复用独立权责表;独立表的变量管理、分支场景、节点路径以及复用时的字段映射统一读取 [权责表指南](guide-workflow-auth-resp.md)。
21
+
22
+ ### 原生工作流程及表单创建顺序
23
+
24
+ 仅在需求明确要求原生流程表单、工作流程或流程中心时使用本节。`workflow create-workflow` 返回的 `workflowId` 用于节点和流程设置,`formId` 用于全部 `wf-form` 命令;不要传 EB 表单的 objId 或 appId。
25
+
26
+ #### 方式一:随工作流程自建流程表单
27
+
28
+ ```bash
29
+ e10-cli workflow create-workflow "费用报销流程" --layout FLOW
30
+ # 团队流程默认自动取创建者机构;多机构场景可显式加 --sub-company <机构ID>
31
+ # 表格式流程表单改用 --layout EXCEL;自由流程加 --is-free 1
32
+ ```
33
+
34
+ 不传 `--form-id` 为自建模式。FLOW 直接创建流程及其表单;EXCEL 会先创建表格式流程表单再绑定,最终都会返回后续使用的 `formId`。
35
+
36
+ #### 方式二:绑定已有原生流程表单
37
+
38
+ ```bash
39
+ e10-cli workflow create-workflow "费用报销流程" --form-id <已有formId>
40
+ ```
41
+
42
+ 绑定模式沿用已有表单自身的布局类型,`--layout` 不负责切换已有表单布局。
43
+
44
+ #### 建表与布局配置
45
+
46
+ ```bash
47
+ # 1. 记录并检查创建命令返回的 formId
48
+ e10-cli wf-form read <formId>
49
+
50
+ # 2. 添加全部主表字段
51
+ e10-cli wf-form add-field <formId> "申请人" Employee
52
+ e10-cli wf-form add-field <formId> "报销金额" Number --precision 2
53
+
54
+ # 3. 添加明细表;记录返回的 subFormId,再添加其余明细字段
55
+ e10-cli wf-form add-detail-table <formId> "费用明细" "费用类型"
56
+ e10-cli wf-form add-field <formId> "费用金额" Number --sub-form-id <subFormId> --precision 2
57
+
58
+ # 4. 按需求配置选项、公式、联动、查重和值带出
59
+ e10-cli wf-form field-options <formId> <fieldId> --options '[{"name":"差旅费"}]'
60
+ e10-cli wf-form formula set <formId> --expression "..." --target <fieldId>
61
+
62
+ # 5. 字段全部创建后配置分组和显示属性
63
+ e10-cli wf-form group <formId> --groups '{"基本信息":["申请人","报销金额"]}'
64
+ e10-cli wf-form field-prop <formId> --required 申请人 报销金额 --readonly 流程编号 --single-row 备注
65
+
66
+ # 6. 回读字段与布局结果;只有需求明确要求多套布局时才 layout add
67
+ e10-cli wf-form read <formId>
68
+ ```
69
+
70
+ 字段应先建全,再统一做分组和字段属性,避免反复重建布局。`add-field`、`group`、`field-prop` 内部均会按各自职责保存或重建布局,通常不需要每加一个字段都手工执行 `layout init`;只有明确需要重建默认布局时才单独使用它。多套布局用 `layout add`,删除指定附加布局用 `layout delete`。
71
+
72
+ ## 流程页面 URL
73
+
74
+ 提交流程的页面后缀是 `/sp/workflow/flowpage/create/流程id`:
75
+
76
+ ```
77
+ /sp/workflow/flowpage/create/1281910260426555393
78
+ ```
79
+
80
+ ---
81
+
82
+ ## URL 传参预填
83
+
84
+ 流程页面支持通过 URL query string 传参来预填表单字段。参数名使用**字段 ID**,参数值为要预填的内容。
85
+
86
+ ```js
87
+ var WORKFLOW_ID = '1281935012370612224';
88
+ var workflowUrl = publicUrl + '/sp/workflow/flowpage/create/' + WORKFLOW_ID;
89
+
90
+ // 根据上下文拼接预填参数
91
+ if (selectedCell) {
92
+ var params = [];
93
+ if (selectedCell.roomId) {
94
+ params.push(F.roomNo + '=' + encodeURIComponent(selectedCell.roomId));
95
+ }
96
+ if (selectedCell.date) {
97
+ params.push(F.bookingDate + '=' + encodeURIComponent(selectedCell.date));
98
+ }
99
+ if (params.length > 0) {
100
+ workflowUrl = workflowUrl + '?' + params.join('&');
101
+ }
102
+ }
103
+ // 最终 URL 示例:
104
+ // /sp/workflow/flowpage/create/1281935012370612224?1281934337846132742=1356890123456789&1281934337846132739=2026-06-17
105
+ ```
106
+
107
+ ---
108
+
109
+ ## 注意事项
110
+
111
+ | 规则 | 说明 |
112
+ |------|------|
113
+ | 参数名 | 用表单字段 ID(纯数字字符串) |
114
+ | 参数值 | 需要 `encodeURIComponent` |
115
+ | Select 字段 | 传参时用**选项 ID**(`valueKey`),不能传显示名称 |
116
+ | 参数名不生效 | 可能需要换成流程表单里定义的字段标识(短码),让用户确认 |
117
+
118
+ ---
119
+
120
+ ## CLI 流程管理
121
+
122
+ ### 创建流程
123
+
124
+ ```bash
125
+ e10-cli workflow create <appId> <formObjId> <name> [desc]
126
+ # 自动设置所有人可发起;默认不加菜单,要入口加 --menu(「发起菜单」LAYOUT,指向表单新建页,点开即触发流程)
127
+ # 漏加可用 `e10-cli menu add-start <appId> <formObjId>` 补
128
+ ```
129
+
130
+ ### 查看节点
131
+
132
+ ```bash
133
+ e10-cli workflow nodes <workflowId>
134
+ # 输出节点名称、类型(发起/审批/归档)、操作者、连线关系
135
+ ```
136
+
137
+ ### 设置审批人
138
+
139
+ ```bash
140
+ # 指定人
141
+ e10-cli workflow set-operator <workflowId> <nodeId> 张三
142
+ # 指定角色(名称精确优先;子串命中多个时会列出候选,要求改用完整名称或角色 ID)
143
+ e10-cli workflow set-operator <workflowId> <nodeId> 财务主管 --type role
144
+ # 发起人上级
145
+ e10-cli workflow set-operator <workflowId> <nodeId> --type superior
146
+ # 发起人上级"逐级审批"(直接上级按顺序逐个处理):
147
+ e10-cli workflow set-operator <workflowId> <nodeId> --type superior --sign-order 依次处理
148
+ # 上级/本人组支持 --sign-order:会签/非会签/竞签/依次处理(逐级)/抄送/抄送需批注
149
+ # "所有上级"(整条上级链,如 结束归档:抄送发起节点所有上级需批注):
150
+ e10-cli workflow set-operator <workflowId> <nodeId> --type initiator # ① 审批/处理组=发起人本人
151
+ e10-cli workflow set-operator <workflowId> <nodeId> --type superior --superior-scope 所有上级 --sign-order 抄送需批注 --append # ② 追加抄送组
152
+ # 所有人
153
+ e10-cli workflow set-operator <workflowId> <nodeId> --type all
154
+ # 自由选择(发起时自己选)
155
+ e10-cli workflow set-operator <workflowId> <nodeId> --type free
156
+ # 上一节点操作者
157
+ e10-cli workflow set-operator <workflowId> <nodeId> --type prev-node
158
+ # 指定部门(含下级)
159
+ e10-cli workflow set-operator <workflowId> <nodeId> 开发部 --type dept
160
+ # 多部门 + 跨部门会签、单个部门内非会签(如"营销部,财务部,市场部 会签、部门内非会签"):
161
+ e10-cli workflow set-operator <workflowId> <nodeId> "营销部,财务部,市场部" --type dept --dept-scope 本部门 --org-non-sign
162
+ # 指定岗位
163
+ e10-cli workflow set-operator <workflowId> <nodeId> 财务经理 --type position
164
+ # 岗位限定"发起人所在部门"(如 部门主管/财务经理 只在本部门内找人):
165
+ e10-cli workflow set-operator <workflowId> <nodeId> 部门主管 --type position --pos-scope 发起人同部门 --sign-order 非会签
166
+ # 签署顺序 + 批次
167
+ e10-cli workflow set-operator <workflowId> <nodeId> 张三 --sign-order 竞签 --orders 0.10
168
+ # 组内多操作者(一个节点配多人,任一人或全部审批)
169
+ e10-cli workflow set-operator <workflowId> <nodeId> "区域经理,部门领导" --type role --sign-order 竞签
170
+ ```
171
+
172
+ **修改已有操作者的签署顺序(会签→非会签/竞签/依次/抄送),不删掉重建**:
173
+
174
+ ```bash
175
+ e10-cli workflow operator-sign <workflowId> <nodeId> --sign-order 非会签
176
+ e10-cli workflow operator-sign <workflowId> <nodeId> --sign-order 竞签 --group 指定角色
177
+ ```
178
+
179
+ > ⚠️ `set-operator` 建的是**会签**;要改成非会签/竞签/依次/抄送,用 `operator-sign`(更新旧组,不重建,避免破坏关联)。`--group` 指定组名可只改某组。
180
+
181
+ > 🚫 **操作者配置硬规则(防"兜底成具体人员"错配)**:需求里操作者是「角色 / 部门 / 岗位 / 发起人上级 / 本人 / 表单字段 / 矩阵 / 自由选择 / 所有人」时,**必须用对应 `--type`**(role / dept / position / superior / initiator / form / matrix / free / all),并按需求的关键词(角色名/部门名/岗位名/字段名…)配置;**名称解析不到就停下报告或确认,绝不退而求其次去指定某个具体人员顶替**(那会搭错组织权限,典型症状:节点操作者成了某个无关的具体人员)。只有需求明确写"指定某人/张三"时才用默认 `user`。配完用 `workflow nodes` / 节点操作者回读核对类型与需求一致。
182
+ >
183
+ > 🚫 **抄送组不能是节点唯一操作者**:抄送(含需批注)不产生审批,一个节点必须至少有 1 个审批/处理组;"某人审批 + 抄送xxx" = 先 `set-operator` 建审批组,再 `--append` 追加抄送组(如上方"结束归档"例子)。
184
+
185
+ **签署方式(--sign-order)概念**——决定"多个审批人之间怎么算通过":
186
+
187
+ | 签署方式 | 含义 |
188
+ |---------|------|
189
+ | **会签**(默认) | 选择的多人**必须都审批通过**才继续流转 |
190
+ | **非会签** | 选择的多人中**只要一个人审批通过**就流转下去 |
191
+ | **竞签** | 非会签的一种:多人同时可见、**先到先审**,谁先提交谁生效(其他人无需再审) |
192
+ | **依次处理** | 按人员选择顺序逐个审批,**全部审完**才流转 |
193
+ | **抄送** | 抄送对象,**不影响流转**;需批注的抄送对象批注后转入已办,不需批注的查看即转入已办 |
194
+
195
+ > **「A 或 B 审批」= 一个节点多人 + 竞签/非会签**,不是物理分两条线。比如"区域经理 或 部门领导审核":`set-operator <wf> <node> "区域经理,部门领导" --type role --sign-order 竞签`,图上只有一根线。**需求里出现"或/任一人"的审批,优先用竞签/非会签**,只有按条件真正分流(不同分支走不同流程)才拆节点。
196
+ >
197
+ > **一个节点多人**:keyword 用逗号分隔(`"角色1,角色2"` 或 `"张三,李四"`)。`set-operator` 每次全量重建该节点操作者组(先清空旧组再新建),重复设置不会堆积。
198
+ # 矩阵对应(查矩阵表动态获取审批人)
199
+ e10-cli workflow set-operator <workflowId> <nodeId> --type matrix \
200
+ --matrix-id <矩阵ID> --value-config-id <值字段configId> \
201
+ --matrix-rule "<条件configId>:1:1"
202
+ # 批次条件独立配置(适用于所有操作者类型,不改变矩阵规则)
203
+ e10-cli workflow operator-batch list <workflowId> <nodeId>
204
+ e10-cli workflow operator-batch set-condition <workflowId> <nodeId> <groupId> <operatorSetId> \
205
+ --rule "form:金额:范围:10000:100000"
206
+ # matrix-rule 格式: 条件configId:来源type:operate(operate可省略)
207
+ # type: 1=发起人部门/分部,3=当前节点未操作者部门/分部,5=当前操作人部门/分部;或真实表单字段ID。
208
+ # operate: 部门1/2/3/49/67,分部4/5/6/50;省略为本级(部门1,分部4)。
209
+ # 同义范围按条件列类型转换:1↔4、2↔5、3↔6、49↔50;分部不支持67。
210
+ # 也支持self/children/parents/upward。旧第4段仍忽略,不能用它传组织ID。
211
+ # 表单字段/指定组织推荐 --matrix-rules JSON或@文件,与 --matrix-rule 互斥。
212
+ # JSON示例(所有ID替换为真实值;ID用字符串以免精度丢失):
213
+ # [{"sourceField":"条件列ID","type":"field","targetField":"表单字段ID","targetFieldCN":"申请分部","operate":"self"}]
214
+ # [{"sourceField":"条件列ID","type":"0","content":["部门或分部ID"],"contentCN":"组织名称","operate":"self"}]
215
+ # sourceField为矩阵条件列configId;部门/分部由该列元数据自动识别。
216
+ # type=field(也接受type=2+targetField)在请求中转换为真实字段ID,后端落库type=2、targetField=真实字段ID。
217
+ # 不要把裸type=2当成字段ID;指定组织type=0必须提供content(ID逗号串或数组)。
218
+ # 参数校验完成后才清理旧组;--append保留旧组。仅支持部门/分部条件,复杂自定义条件仍需扩展。
219
+ # 表单相关人员(从表单数据中动态获取审批人)
220
+ e10-cli workflow set-operator <workflowId> <nodeId> --type form \
221
+ --source <表单ID> --target <人员字段ID>
222
+ ```
223
+
224
+ ### 节点签字意见(必填、签批签名、显示、反馈)
225
+
226
+ ```bash
227
+ e10-cli workflow node sign <workflowId> <nodeId> # 查看全部签字意见配置
228
+ e10-cli workflow node sign <wf> <node> --all-required # 全部操作类型意见必填
229
+ e10-cli workflow node sign <wf> <node> --none-required # 全部不必填
230
+ e10-cli workflow node sign <wf> <node> --select "退回,加签" # 指定操作类型意见必填
231
+ ```
232
+
233
+ > 「退回时意见必填」= `--select 退回`(如:上级审核节点退回时要求填写意见)。操作类型以该节点可选范围为准(不同节点类型可操作类型不同)。
234
+
235
+ 新增 `--data` 局部修改隐藏输入框、必须签批签名、意见列表类型/范围、隐藏空意见及反馈。拟签使用 `workflow draft-opinion`;节点转发使用 `workflow node forward-setting`。完整参数和话术见 [拟签、转发与签字意见指南](guide-opinion-settings.md)。
236
+
237
+
238
+ ### 节点提交校验
239
+
240
+ ```bash
241
+ e10-cli workflow node validate <workflowId> <nodeId> --view # 查看校验状态
242
+ e10-cli workflow node validate <wf> <node> --name "一致性校验" \
243
+ --rule "行程明细.行程开始时间 等于 出差开始日期" # 设置校验:行程开始时间=出差开始日期
244
+ e10-cli workflow node validate <wf> <node> --name "报销人校验" --rule "报销人 不为空" \
245
+ --pass-tip "报销人已填写" --fail-tip "请选择报销人" --on-fail 禁止提交
246
+ e10-cli workflow node validate <wf> <node> --name "多条件组合" \
247
+ --rules-json @node-check.json --on-fail 仅做提醒
248
+ e10-cli workflow node validate <wf> <node> --disable # 关闭校验
249
+ ```
250
+
251
+ `--rule` 支持字段对字段、字段对常量及 `为空`/`不为空`;明细字段可加 `:任一`/`:所有`。同一规则内多条 `--rule` 为 AND;同名重新执行仅替换同名规则,其他规则保留。节点多规则关系用 `--relation AND|OR`,不合规处理用 `--on-fail 禁止提交|仅做提醒`(平台码值分别为 1、2)。`--pass-tip`/`--fail-tip` 设置每条规则的合规/不合规提示语,可用普通文字或平台字段标签、字段值占位符。`--pass-popup on|off`/`--fail-popup on|off` 控制节点级结果显示。用 `--view` 回读。
252
+
253
+ 组合条件使用 `--rules-json '<JSON>'` 或 `--rules-json @node-check.json`;组含 `relation`(AND/OR)和 `rules`,叶子含 `source`(form/system)、`field`、`op`、`value`,明细可加 `detail`(任一/所有),数值上限可加 `upperOp`、`upperValue`:
254
+
255
+ ```json
256
+ {"relation":"AND","rules":[
257
+ {"field":"费用明细.发票金额","detail":"任一","op":"大于","value":1,"upperOp":"小于等于","upperValue":100},
258
+ {"relation":"OR","rules":[
259
+ {"source":"system","field":"发起人分部","op":"属于","value":"泛微北京"},
260
+ {"source":"system","field":"发起人","op":"属于","value":"卢顾萱"}
261
+ ]}
262
+ ]}
263
+ ```
264
+
265
+ 组织或人员重名时,`value` 使用浏览器返回的 `{ "id": "...", "content": "..." }` 指定对象。按解析条件、保存规则和提示语、保存不合规处理、启用节点校验的顺序执行。
266
+
267
+ **表单相关人员**(`--type form`)从指定表单的 Employee 字段动态获取审批人,支持筛选条件:
268
+
269
+ ```bash
270
+ # 无筛选:取表单中所有员工
271
+ e10-cli workflow set-operator <wf> <nodeId> --type form \
272
+ --source 1294600110549819401 --target 1294600110549819393
273
+
274
+ # 带筛选:人员级别 > 100
275
+ e10-cli workflow set-operator <wf> <nodeId> --type form \
276
+ --source 1294600110549819401 --target 1294600110549819393 \
277
+ --condition '{"fieldId":"1294600110549819396","fieldType":"Number","fieldName":"人员级别","func":"gt","value":"100"}'
278
+
279
+ # 筛选值引用表单字段:申请人 == 创建者(valueFieldId 在流程表单中查找)
280
+ e10-cli workflow set-operator <wf> <nodeId> --type form \
281
+ --source 1294602202274390029 --target 1294602202274390020 \
282
+ --workflow-form 1294601678154162216 \
283
+ --condition '{"fieldId":"1294602202274390020","fieldType":"Employee","fieldName":"申请人","func":"eq","valueFieldId":"2"}'
284
+
285
+ # 或签
286
+ e10-cli workflow set-operator <wf> <nodeId> --type form \
287
+ --source 1294600110549819401 --target 1294600110549819393 \
288
+ --sign-order 或签
289
+ ```
290
+
291
+ > `--condition` 格式:`{"fieldId":"字段ID","fieldType":"字段类型","fieldName":"字段名","func":"比较符","value":"固定值"}`。func 支持:`gt`(大于)、`lt`(小于)、`eq`(等于)、`gte`(≥)、`lte`(≤)、`like`(包含)。用 `valueFieldId` 代替 `value` 表示值引用了表单字段,需同时指定 `--workflow-form <流程表单objId>` 告诉 CLI 在哪个表单里找引用字段。`--sign-order` 默认 `会签`。
292
+
293
+ ### 添加节点
294
+
295
+ ```bash
296
+ e10-cli workflow add-node <workflowId> <type> "节点名称"
297
+ # type: 0=发起 1=审批 2=确认/会签 3=归档 5=投递 7=自动处理 8=等待
298
+ # forkstart=分流点 forkend=合流点 forkmiddle=分流中间点
299
+ # 结束节点 = 归档节点(type=3);流程末尾的归档节点就是「结束」,二者是同一个节点类型
300
+ # --node-attr: 0=一般(默认) 1=分流点 2=分流中间点 3=合流点
301
+ ```
302
+
303
+ > **分流节点不能做审批**:`forkstart` / `forkmiddle` / `forkend`(nodeAttr 1/2/3)是**纯路由节点**,配不了审批操作者——节点一旦被标成分流/合流点,`set-operator` 就设不上审批人。分流职责和审批职责必须分开:分流节点只负责分叉/合流,审批人放在各分支的**审批节点(type=1)**上,即 `forkstart → 各分支审批节点(type=1) → forkend`。
304
+
305
+ ### 等待节点(流程机器人,type=8)
306
+
307
+ 等待节点在平台叫「流程机器人」(nodeType=8),配置走 `workflow node-robot`:
308
+
309
+ ```bash
310
+ e10-cli workflow node-robot get <wf> <nodeId> # 查看当前配置
311
+ e10-cli workflow node-robot set <wf> <nodeId> --wait-value 30 # 设置等待时长
312
+ e10-cli workflow node-robot set <wf> <nodeId> --processing-interval 5 # 处理间隔
313
+ e10-cli workflow node-robot set <wf> <nodeId> --remark "等待审批结果" # 备注(多语言用 set-remark)
314
+ ```
315
+
316
+ > ⚠️ **等待时长 `--wait-value` 的单位是「分钟」,不是小时/天**。`--wait-value 30` = 30 分钟;`--processing-interval` 处理间隔同为分钟。填错单位会导致流程等待时长差 24/60 倍。`--wait-type 1` = 指定时长;`waitTimeValue=0` 是默认值(未配置指定时长)。
317
+
318
+ ### 重命名节点
319
+
320
+ ```bash
321
+ e10-cli workflow rename-node <workflowId> <nodeId> "新名称"
322
+ ```
323
+
324
+ ### 添加连线(节点→节点)
325
+
326
+ 一键添加连线:
327
+ ```bash
328
+ e10-cli workflow add-link <workflowId> <fromNodeId> <toNodeId> "标签"
329
+ e10-cli workflow add-link <workflowId> <fromNodeId> <toNodeId> "退回" --reject
330
+ e10-cli workflow add-link <workflowId> <fromNodeId> <toNodeId> "主线路" --default
331
+ ```
332
+
333
+ 批量添加连线(出口表混着退回线和默认出口时用这个):
334
+ ```bash
335
+ e10-cli workflow add-links <workflowId> @links.json
336
+ # links.json:
337
+ # [
338
+ # {"from":"拟稿","to":"套红", "label":"拟稿 至 套红", "default":true},
339
+ # {"from":"部门经理审稿","to":"拟稿", "label":"部门经理审稿 退回 拟稿","reject":true}
340
+ # ]
341
+ ```
342
+
343
+ > **退回 / 默认出口逐条给**:`reject` / `default` 写在每条连线上;命令行上的 `--reject` / `--default`
344
+ > 是给整批兜底的默认值,逐条给的值优先于它。
345
+ >
346
+ > **默认出口会自动让位**:指定某条为默认出口时,同一源节点上原有的默认出口会被自动取消,
347
+ > 保证一个源节点只有一条默认出口。同一批里给同一源节点指定了两条默认出口会直接报错,
348
+ > 不会静默留下两条。
349
+ >
350
+ > **多条连线用 `add-links`**:`add-link` 内部 read→改→save,并行的会互相覆盖。`add-links` 一次把整批
351
+ > 拼好、一次保存,不会丢数据。不要用 `&` 或 `parallel` 并跑 add-link。
352
+ >
353
+ > 保存后 CLI 会**回读比对**:新连线的退回/默认标志与让位结果都对得上才算成功,
354
+ > 对不上会直接报错退出,不会因为服务端回了「保存成功」就放过。
355
+
356
+ ### 删除连线
357
+
358
+ ```bash
359
+ # 先用 workflow nodes --json 获取连线的 linkId
360
+ e10-cli workflow nodes <workflowId> --json
361
+ # 返回的 links 数组每条都有 linkId,可直接删除
362
+ e10-cli workflow delete-link <workflowId> <linkId>
363
+ # 支持一次删多条
364
+ e10-cli workflow delete-link <workflowId> <linkId1> <linkId2>
365
+ ```
366
+
367
+ > **注意**:`workflow nodes --json` 返回的每条连线都带 `linkId`,用它来删除,不要用 nodeId。
368
+
369
+ ### 查看出口列表
370
+
371
+ ```bash
372
+ e10-cli workflow link-list <workflowId>
373
+ # 显示源节点→目标节点、默认出口[默认]、退回出口[退回]、条件状态[有条件]
374
+ # --node-id 过滤单个源节点的出口
375
+ e10-cli workflow link-list <workflowId> --node-id <nodeId>
376
+ ```
377
+
378
+ ### 修改/删除出口(列表方式)
379
+
380
+ ```bash
381
+ # 先获取当前出口列表作为基线
382
+ e10-cli workflow link-list <workflowId> --json > links.json
383
+ # 修改后保存
384
+ e10-cli workflow link-save <workflowId> @links.json
385
+ # 删除指定出口
386
+ e10-cli workflow link-save <workflowId> @links.json --delete-rows "linkId1,linkId2"
387
+ ```
388
+
389
+ ### 查看节点列表(含分流/合流属性)
390
+
391
+ ```bash
392
+ e10-cli workflow nodes <workflowId> --mode list
393
+ # 显示 nodeAttr(0=一般/1=分流点/2=分流中间点/3=合流点)+ mergeType(全部分支/指定分支/分支数/比例)
394
+ ```
395
+
396
+ ### 全流程搜索(不依赖 appId)
397
+
398
+ ```bash
399
+ e10-cli workflow search --name "费用报销"
400
+ e10-cli workflow search --id <workflowId>
401
+ e10-cli workflow search --name "审批" --belong 1 --page-size 50
402
+ ```
403
+
404
+ ### 节点操作菜单
405
+
406
+ ```bash
407
+ # 查看菜单
408
+ e10-cli workflow node menu <workflowId> <nodeId>
409
+ # 切换菜单启用状态
410
+ e10-cli workflow node menu <workflowId> <nodeId> --toggle <menuId>
411
+ ```
412
+
413
+ ### 节点退回设置
414
+
415
+ ```bash
416
+ # 查看
417
+ e10-cli workflow node reject <workflowId> <nodeId>
418
+ # 修改
419
+ e10-cli workflow node reject <workflowId> <nodeId> \
420
+ --remind 1 --type 1 --checked-node 1 --submit-type 1
421
+ ```
422
+
423
+ ### 节点超时处理
424
+
425
+ ```bash
426
+ # 查看
427
+ e10-cli workflow node timeout <workflowId> <nodeId>
428
+ # 新增超时规则(指定时间 48h,下一操作者,超时前 2h 提醒)
429
+ e10-cli workflow node timeout <workflowId> <nodeId> \
430
+ --time-type 1 --time-value 48 --flow-type 1 --remind-type 0 --remind-hours 2
431
+ ```
432
+
433
+ ### 工作流维度设置
434
+
435
+ ```bash
436
+ # 提交确认
437
+ e10-cli workflow base submit-confirm <workflowId> --confirm 1
438
+ # 显示所有节点;显示抄送人(0关闭/1开启)
439
+ e10-cli workflow base submit-confirm <workflowId> --show-way 0 --show-cc 1
440
+ # 指定确认节点;1选择、2排除,节点支持 ID 或唯一名称
441
+ e10-cli workflow base submit-confirm <workflowId> --node-range 1 --nodes "审批节点" "节点ID"
442
+ # 修改列表时替换整个列表,其他设置保留;切换全部节点清空列表
443
+ e10-cli workflow base submit-confirm <workflowId> --node-range 0
444
+ # 查询原配置,保存操作自动先读后合并并回读验证
445
+ # --show-way:0所有节点、1下一节点、2会流转到达的节点
446
+ e10-cli workflow base submit-confirm <workflowId> --json
447
+ # 签字意见
448
+ e10-cli workflow base sign-set <workflowId> --show-order 1
449
+ # 评论
450
+ e10-cli workflow base comment-set <workflowId> --enable 1
451
+ # 批量操作
452
+ e10-cli workflow function batch-set <workflowId> --data '{"enabledBatch":true,"allowReject":true}'
453
+ # 自动处理
454
+ e10-cli workflow function auto-approve <workflowId> --data '{"autoHandle":true,"handWay":"0"}'
455
+ # 其他设置
456
+ e10-cli workflow function other-set <workflowId> --data '{"messageOperation":true,"enableAutoSave":true}'
457
+ # 流程标题规则(保存/提交后生成标题)
458
+ e10-cli workflow setting title <workflowId> # 查看可用变量
459
+ e10-cli workflow setting title <wf> --rule "工作流名称|发起人|提交日期" --sep "-" # 标题=流程名-发起人-提交日期
460
+ e10-cli workflow setting title <wf> --disable # 关闭自动生成标题
461
+ ```
462
+
463
+ > **流程标题**:`--rule` 用竖线分隔字段名(可用 `工作流名称`/`发起人`/`提交日期`/`流程编号` 等系统字段或任意表单字段名),`--sep` 指定分隔符(默认 `-`)。CLI 自动把字段名解析成占位编码(如 `工作流名称=-100`)并启用 `subtitleType` 开关。
464
+
465
+ ### 高级设置
466
+
467
+ ```bash
468
+ # 流程存档
469
+ e10-cli workflow advanced doc <workflowId> --enable 1 --doc-types "0,1"
470
+ # 定时触发(每日 09:00)
471
+ e10-cli workflow advanced schedule <workflowId> \
472
+ --enable 1 --frequency '{"item1":1,"item2":1}' --time "09:00:00" --weekday-only 1
473
+ # 定时触发人员范围
474
+ e10-cli workflow advanced schedule-range <workflowId> --list
475
+ ```
476
+
477
+ ### 高级设置 → 功能管理
478
+
479
+ 撤回 `withdraw`、加审 `add-operator`、减审 `minus-operator`、接收人范围 `receiver-range`、转发/传阅/抄送收回 `forward-circulate-back`,每组提供 `get/create/update`。读取默认值后新增、读取现有值后局部修改,并回读核对。接收人范围统一支持加审规则(`--add-operator-id`)、指定流转通用范围(`--scene assign-flow --node-id`)、单独目标节点范围(`--scene assign-flow-target --node-id --target-node-id`);限普通模式。详见 [功能管理命令、参数与自然语言示例](guide-function-management.md)。
480
+
481
+ ### 整体重写流程图(save-layout)
482
+
483
+ 大规模调整节点连线时,构造完整 XML → 一次性保存覆盖当前布局:
484
+
485
+ ```bash
486
+ # 1. 将 XML 文件保存为流程布局(覆盖当前)
487
+ e10-cli workflow save-layout <workflowId> @layout.xml
488
+
489
+ # 2. 构造完整 XML(浏览器 mxGraph 格式)
490
+ ```
491
+
492
+ XML 格式示例(浏览器 mxGraph 格式:节点 cell id 用纯数字,带真实 `nodeId`;连线带真实 `linkId`,`source`/`target` 引用节点的数字 id):
493
+ ```xml
494
+ <mxGraphModel grid="0" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1331" pageHeight="888" background="#ffffff"><root>
495
+ <mxCell id="0"/><mxCell id="1" parent="0"/>
496
+ <!-- 节点:vertex="1",带 nodeId -->
497
+ <mxCell id="2" value="发起节点" style="rounded=1;whiteSpace=wrap;html=1;resizable=1;rotatable=0;arcSize=10;fillColor=#5D9CEC;strokeColor=#5D9CEC;" vertex="1" nodeType="0" nodeId="节点ID" operatorNameStr=" " parent="1"><mxGeometry x="465" y="80" width="170" height="64" as="geometry"/></mxCell>
498
+ <mxCell id="3" value="审批节点" style="..." vertex="1" nodeType="1" nodeId="节点ID" parent="1"><mxGeometry x="465" y="220" width="170" height="64" as="geometry"/></mxCell>
499
+ <!-- 连线:edge="1",带 linkId、source、target -->
500
+ <mxCell id="6" value="发起 至 审批" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#5D9CEC;" edge="1" linkId="连线ID" isDefault="0" isReject="0" orderId="0.0" source="2" target="3" parent="1"><mxGeometry relative="1" as="geometry"/></mxCell>
501
+ </root></mxGraphModel>
502
+ ```
503
+
504
+ **关键规则**:
505
+ - 节点的 `id` 用数字(2, 3, 4...),连线的 `source`/`target` 引用节点的 `id`
506
+ - 连线的 `linkId` 是服务端分配的唯一标识,删除连线用这个
507
+ - 保存:`e10-cli workflow save-layout <workflowId> @修改后的.xml`
508
+ - **务必保持浏览器格式**:服务器 saveLayout 只认纯数字 cell id。`getXml` 输出的 `node_xxx`/`link_xxx` 格式直接回传会解析失败(节点被判为 null/已删除)
509
+
510
+ ### 节点自动排版(auto-layout)
511
+
512
+ CLI 搭建的流程(add-node 加节点)节点通常挤在一列,用自动排版重排:
513
+
514
+ ```bash
515
+ # 默认左右分层(发起在最左)
516
+ e10-cli workflow auto-layout <workflowId>
517
+
518
+ # 上下排布(发起在最顶,平台连线默认纵向)
519
+ e10-cli workflow auto-layout <workflowId> --direction ttb
520
+
521
+ # 只算不打回(看分层结果)
522
+ e10-cli workflow auto-layout <workflowId> --dry-run
523
+ ```
524
+
525
+ **算法**:读 getXml → 按连线最长路径分层(忽略退回线)→ 全量重排节点 mxGeometry → saveLayout 回写 → 回读验证。分支(forkstart→分支们→forkend)自然融入分层,同层节点垂直排开。只改节点坐标,连线自动正交路由。
526
+
527
+ **什么时候跑**:`create` / `create-workflow` 建流程时自动跑一次,**之后不再自动跑**。所以**加/删节点、加/删连线之后要补跑一次**(`add-node` 只把新节点丢在图的边上,不会融进流程线)。`rename-node` / `set-operator` / 条件与动作配置不改拓扑,不用跑。
528
+
529
+ 两个边界要知道:
530
+
531
+ - **会覆盖手工摆放**。它是整图重排,人在浏览器里拖过的坐标一律按算法结果重置。手工调过就别再跑,或跑完重新调。
532
+ - **不保证消除交叉**。分层算法只对「跨 ≥2 层的长跳线」把**目标**节点下移一档;跨层连线的水平段仍可能穿过中间层节点。**跑完看一眼流程图**,有交叉只能手工调坐标(或试 `--direction ttb` 换个走线方向)。
533
+
534
+ ### 导出流程(export)
535
+
536
+ ```bash
537
+ # 导出到当前目录(文件名由平台给出)
538
+ e10-cli workflow export <workflowId>
539
+
540
+ # 指定文件或目录
541
+ e10-cli workflow export <workflowId> -o D:/backup/
542
+ e10-cli workflow export <workflowId> -o D:/backup/上会申请.zip
543
+ ```
544
+
545
+ 平台导出是**异步打包**(`POST packing` 建任务 → 轮询 `packingStatus` → 下载 zip),打包内容包含流程绑定的 e-builder 应用,通常要几十秒到几分钟。命令按 `--interval`(默认 2 秒)轮询、`--timeout`(默认 600 秒)封顶,打包期间打印进度;成功写出 zip 后打印本地路径与字节数。
546
+
547
+ - `--name <名称>`:自定义导出名(只影响任务展示与平台文件名),缺省取流程名称。
548
+ - `--json`:输出任务 ID、本地文件、字节数与平台文件名,便于脚本消费。
549
+ - 导出的 zip 是平台的迁出包,可原样用于平台的导入/迁入。
550
+
551
+ ---
552
+
553
+ ## 相关指南
554
+
555
+ - **分支条件 / 出口条件 / 条件 JSON** → `workflow/guide-workflow-condition.md`
556
+ - **动作流(跨表单写入)/ 提交事件 / 角色管理** → `workflow/guide-workflow-action.md`
557
+
558
+ ## 基础设置:权限、共享、提醒
559
+
560
+ `workflow base auth-set`、`workflow base share-set`、`workflow base remind-set` 的字段、默认值、条件共享、字段权限、节点提醒和模板,见[基础设置指南](guide-base-auth-share-remind.md)。
561
+
562
+ 已有流程统一通过 `frame/getPathFrameInfo.relateType` 判断关联类型:`wea_form` 为原生工作流表单,`wea_ebuilder` 为 EB。节点字段权限、节点布局及流程字段赋值共用该判断,不试探表单接口。共享字段权限两类均固定 legacy,无 `--renderer` 参数。纯 EB 表单未关联流程时,由已知 EB 入口明确传入类型,无须调用 frame。
563
+
564
+ ### 流程详情页页签:名称、排序及自定义页签
565
+
566
+ 统一入口 `workflow base tabs-set <workflowId>`(原 `workflow setting tabs` 已移除)。
567
+
568
+ ```bash
569
+ # 查看完整列表、页签 ID 和配置
570
+ e10-cli workflow base tabs-set <workflowId> --json
571
+ # 修改已有页签名称(空字符串恢复系统名称)
572
+ e10-cli workflow base tabs-set <workflowId> --tab <页签ID> --name '申请详情'
573
+ # 新增自定义地址页签:其他项使用程序默认,默认不显示且不默认打开
574
+ e10-cli workflow base tabs-set <workflowId> --create --name '业务信息' --pc-url '/example?requestId=${requestId}'
575
+ # 修改一个地址,保留另一端地址和其他设置;移动地址空时使用PC地址
576
+ e10-cli workflow base tabs-set <workflowId> --tab <页签ID> --mobile-url '/mobile/example'
577
+ # 按完整名单排序(所有 ID 恰好一次)
578
+ e10-cli workflow base tabs-set <workflowId> --order <页签ID1> <页签ID2> <其余页签ID...>
579
+ # 查看语言列表,再以返回的 langid 或 langtype 修改指定语言,保留其他语言
580
+ e10-cli workflow base tabs-set <workflowId> --tab <页签ID> --get-locales
581
+ e10-cli workflow base tabs-set <workflowId> --tab <页签ID> --locales '{"en_US":"Application details"}'
582
+ # 删除仅限自定义地址页签;独立执行,保存后回读
583
+ e10-cli workflow base tabs-set <workflowId> --delete <页签ID>
584
+ ```
585
+
586
+ 已有显示参数 `--only / --show / --hide / --mobile / --mobile-menu / --default-open` 保留。按 ID、类型码、名称定位;歧义报错。平台禁用的显示项不能改动。修改先读后合并,整表保存保留其他行;回读核对名称、地址、顺序、开关。多语言为独立保存步骤,失败时需先查询状态,不能假定前一步已回滚。
587
+
588
+ 默认值来源:新增 ID 从 `getCustomTabParam` 分配,链接默认从 `getTabCustomLinkForm` 读取;显示开关默认遵循前端 `addNewTab` 的初始化(服务端 ID 接口不返回开关默认)。
589
+
590
+ ### 签字意见与附件设置
591
+
592
+ `workflow base sign-set <workflowId>` 查询配置,`--schema` 查看实时字段、默认值和枚举。仅修改指定参数,保留其他设置;不调用 PC/移动显示样式接口。
593
+
594
+ | 参数 | 对应功能 |
595
+ |---|---|
596
+ | `--show-order 0/1` | 意见及评论倒序/正序 |
597
+ | `--view-relate 0/1` | 允许查看关联流程意见及评论 |
598
+ | `--view-forward 0/1` | 事项分享默认允许查看意见及评论 |
599
+ | `--allow-relate 0/1` | 允许签字意见关联事项 |
600
+ | `--relate-range 0/1` | 全部/选择关联范围 |
601
+ | `--relate-items <类型ID...>` | 关联事项类型完整名单(如 workflow,不是流程定义 ID) |
602
+ | `--clear-relate-items` | 清空已选事项类型,范围须为全部 |
603
+ | `--allow-upload 0/1` | 允许签字意见上传附件 |
604
+ | `--upload-catalog <目录ID>` | 上传目录;0 清空。需平台已开放知识管理 |
605
+ | `--allow-location 0/1` | 允许插入位置 |
606
+ | `--allow-emoticon 0/1` | 允许插入表情 |
607
+ | `--allow-at 0/1` | 允许 @ 人员 |
608
+ | `--inform-range 0/1` | 所有人/流程参与人(不含共享人) |
609
+ | `--candidates relate/catalog` | 查询事项类型/目录候选(首100项或树根) |
610
+
611
+ 原 `--show-src` 保留兼容,未指定时保留原来源值。
612
+
613
+ ```bash
614
+ e10-cli workflow base sign-set <workflowId> --candidates relate
615
+ e10-cli workflow base sign-set <workflowId> --relate-range 1 --relate-items workflow
616
+ e10-cli workflow base sign-set <workflowId> --upload-catalog <目录ID>
617
+ e10-cli workflow base sign-set <workflowId> --relate-range 0 --clear-relate-items --upload-catalog 0
618
+ ```
619
+
620
+ 新增 `workflow base file-set <workflowId>`,仅支持两个开关,不配置附件字段本身。开启开关不会立即删除流程或附件。
621
+
622
+ ```bash
623
+ e10-cli workflow base file-set <workflowId> --schema
624
+ e10-cli workflow base file-set <workflowId> --create-delete 1
625
+ e10-cli workflow base file-set <workflowId> --async-delete 0
626
+ ```
627
+
628
+ `--create-delete`:仅发起节点才能删除附件;`--async-delete`:删除流程的同时删除表单、意见及评论附件。均支持 0/1,修改先读后合并并自动回读验证。
629
+
630
+ 七项功能设置完整参数、范围配置和限制见 [功能设置指南](guide-function-settings.md)。