@stalfh233/omc-cli 0.4.15 → 0.4.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -21
- package/README.md +297 -297
- package/coverage/m1-coverage-manifest-v1.json +1278 -1277
- package/dist/args.js +0 -0
- package/dist/artifacts.js +0 -0
- package/dist/bench/call-face-eval.js +0 -0
- package/dist/bench/context-attribution.js +0 -0
- package/dist/bench/discovery-cost-eval.js +0 -0
- package/dist/bench/driver.js +0 -0
- package/dist/bench/evals.js +0 -0
- package/dist/bench/fake-http-server.js +0 -0
- package/dist/bench/instrument.js +0 -0
- package/dist/bench/intent-face-eval.js +40 -40
- package/dist/bench/run.js +0 -0
- package/dist/bench/scenario.js +0 -0
- package/dist/bench/types.js +0 -0
- package/dist/bi-wire.js +0 -0
- package/dist/bizservice-config.js +38 -13
- package/dist/call.js +0 -0
- package/dist/capability-absences.js +0 -0
- package/dist/capability-overview.js +2 -2
- package/dist/capability-shape.js +0 -0
- package/dist/cli-contract.js +0 -0
- package/dist/cli-output.js +41 -15
- package/dist/cli.js +24 -2
- package/dist/code-rules.js +0 -0
- package/dist/command-transport.js +0 -0
- package/dist/config-store.js +4 -0
- package/dist/context.js +0 -0
- package/dist/contract-consistency.js +0 -0
- package/dist/contract-resources.js +0 -0
- package/dist/coverage-consistency.js +0 -0
- package/dist/coverage-registry.js +0 -0
- package/dist/coverage.js +0 -0
- package/dist/data-list-filter.js +0 -0
- package/dist/discovery.js +0 -0
- package/dist/endpoints.js +2 -0
- package/dist/environment-policy.js +0 -0
- package/dist/execution-metadata.js +4 -4
- package/dist/fake/app.js +0 -0
- package/dist/fake/b2-registration.js +26 -0
- package/dist/fake/businessrule.js +0 -0
- package/dist/fake/datarule.js +0 -0
- package/dist/fake/dictionary.js +0 -0
- package/dist/fake/environment.js +0 -0
- package/dist/fake/field.js +0 -0
- package/dist/fake/form.js +0 -0
- package/dist/fake/index.js +0 -0
- package/dist/fake/list-view.js +0 -0
- package/dist/fake/model.js +0 -0
- package/dist/fake/online-js.js +0 -0
- package/dist/fake/report.js +0 -0
- package/dist/fake/routes.js +0 -0
- package/dist/fake/rule-lifecycle.js +0 -0
- package/dist/fake/runtime-data.js +0 -0
- package/dist/fake/state.js +0 -0
- package/dist/fake/workflow.js +0 -0
- package/dist/field-change.js +0 -0
- package/dist/field-families.js +48 -0
- package/dist/form-layout.js +0 -0
- package/dist/form-support.js +12 -2
- package/dist/goal-routes.js +0 -0
- package/dist/governed-execution.js +0 -0
- package/dist/human-summary.js +0 -0
- package/dist/identity.js +0 -0
- package/dist/intent/baseline.js +0 -0
- package/dist/intent/capabilities/bizservice.js +0 -0
- package/dist/intent/capabilities/businessrule.js +0 -0
- package/dist/intent/capabilities/datarule.js +0 -0
- package/dist/intent/capabilities/field.js +0 -0
- package/dist/intent/capabilities/form.js +0 -0
- package/dist/intent/capabilities/index.js +0 -0
- package/dist/intent/capabilities/listview.js +0 -0
- package/dist/intent/capabilities/model.js +0 -0
- package/dist/intent/capabilities/onlinejs.js +0 -0
- package/dist/intent/capabilities/report.js +0 -0
- package/dist/intent/capabilities/workflow.js +0 -0
- package/dist/intent/capability.js +0 -0
- package/dist/intent/cli.js +0 -0
- package/dist/intent/compare.js +0 -0
- package/dist/intent/compiler.js +0 -0
- package/dist/intent/dsl.js +0 -0
- package/dist/intent/plan-file.js +0 -0
- package/dist/intent/readback.js +0 -0
- package/dist/intent/schema.js +0 -0
- package/dist/intent/validation.js +0 -0
- package/dist/intent/yaml.js +0 -0
- package/dist/json-column.js +0 -0
- package/dist/lanes/app-contract.js +0 -0
- package/dist/lanes/app-coverage.js +0 -0
- package/dist/lanes/app.js +0 -0
- package/dist/lanes/apply-changes.js +14 -1
- package/dist/lanes/b2-registration-contract.js +5 -0
- package/dist/lanes/b2-registration-coverage.js +1 -0
- package/dist/lanes/b2-registration.js +55 -6
- package/dist/lanes/businessrule-contract.js +0 -0
- package/dist/lanes/businessrule-coverage.js +0 -0
- package/dist/lanes/businessrule.js +0 -0
- package/dist/lanes/contract-support.js +0 -0
- package/dist/lanes/coverage-declaration.js +0 -0
- package/dist/lanes/datarule-contract.js +0 -0
- package/dist/lanes/datarule-coverage.js +0 -0
- package/dist/lanes/datarule-protocol.js +0 -0
- package/dist/lanes/datarule.js +0 -0
- package/dist/lanes/dictionary-contract.js +0 -0
- package/dist/lanes/dictionary-coverage.js +0 -0
- package/dist/lanes/dictionary.js +0 -0
- package/dist/lanes/environment-contract.js +0 -0
- package/dist/lanes/environment-coverage.js +0 -0
- package/dist/lanes/environment.js +0 -0
- package/dist/lanes/field-contract.js +3 -2
- package/dist/lanes/field-coverage.js +0 -0
- package/dist/lanes/field.js +268 -172
- package/dist/lanes/form-contract.js +2 -2
- package/dist/lanes/form-coverage.js +0 -0
- package/dist/lanes/form.js +4 -0
- package/dist/lanes/lane-ids.js +0 -0
- package/dist/lanes/list-view-contract.js +0 -0
- package/dist/lanes/list-view-coverage.js +0 -0
- package/dist/lanes/list-view-shapes.js +0 -0
- package/dist/lanes/list-view.js +0 -0
- package/dist/lanes/meta-contract.js +0 -0
- package/dist/lanes/meta.js +11 -1
- package/dist/lanes/model-contract.js +0 -0
- package/dist/lanes/model-coverage.js +0 -0
- package/dist/lanes/model.js +1 -1
- package/dist/lanes/online-js-contract.js +0 -0
- package/dist/lanes/online-js-coverage.js +0 -0
- package/dist/lanes/online-js.js +0 -0
- package/dist/lanes/report-contract.js +0 -0
- package/dist/lanes/report-coverage.js +0 -0
- package/dist/lanes/report.js +0 -0
- package/dist/lanes/rule-graph.js +0 -0
- package/dist/lanes/rule-lifecycle-contract.js +0 -0
- package/dist/lanes/rule-lifecycle-coverage.js +0 -0
- package/dist/lanes/rule-lifecycle.js +0 -0
- package/dist/lanes/runtime-data-contract.js +0 -0
- package/dist/lanes/runtime-data-coverage.js +0 -0
- package/dist/lanes/runtime-data.js +0 -0
- package/dist/lanes/workflow-contract.js +0 -0
- package/dist/lanes/workflow-coverage.js +0 -0
- package/dist/lanes/workflow.js +2 -0
- package/dist/omc-core-lazy.js +6 -0
- package/dist/online-js-layout.js +0 -0
- package/dist/online-js-source.js +28 -28
- package/dist/package-tool.js +0 -0
- package/dist/package.js +0 -0
- package/dist/plan.js +11 -1
- package/dist/read.js +0 -0
- package/dist/redact.js +0 -0
- package/dist/rule-support.js +0 -0
- package/dist/runtime-support.js +0 -0
- package/dist/service-doctor.js +28 -0
- package/dist/session-manager.js +14 -2
- package/dist/session.js +68 -13
- package/dist/skills.js +0 -0
- package/dist/sqlite-warning-filter.js +27 -0
- package/dist/support.js +0 -0
- package/dist/token-cache.js +65 -0
- package/dist/tool-types.js +0 -0
- package/dist/tools.js +0 -0
- package/dist/usage-log.js +4 -0
- package/dist/wire.js +0 -0
- package/dist/workflow-support.js +0 -0
- package/dist/write-lease.js +0 -0
- package/dist/write-lock.js +0 -0
- package/dist/write.js +24 -2
- package/dist/zip.js +0 -0
- package/docs/tool-surface-map.md +42 -42
- package/package.json +71 -71
- package/skills/omc-acceptance-criteria.md +47 -47
- package/skills/omc-business-configuration.md +258 -257
- package/skills/omc-capabilities.md +197 -197
- package/skills/omc-capability-scouting.md +55 -55
- package/skills/omc-config-draft-review.md +171 -171
- package/skills/omc-five-piece-flow.md +35 -35
- package/skills/omc-glossary.md +86 -86
- package/skills/omc-refusals.md +110 -110
- package/skills/omc-requirement-analysis.md +161 -161
- package/skills/omc-requirement-vocabulary.md +51 -51
- package/skills/omc-start-here.md +82 -82
- package/skills/omc-tool-selection.md +119 -119
- package/skills/omc-write-hazards.md +88 -87
- package/dist/approval-token.js +0 -102
- package/dist/server.js +0 -92
|
@@ -1,197 +1,197 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: omc-capabilities
|
|
3
|
-
description: The OMC capability catalogue — what each capability can do, its tools, recipes, and boundaries. Use to answer "can OMC/platform do X?" and to find the tool for X before discovery.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Capability Catalogue (能力总表)
|
|
7
|
-
|
|
8
|
-
The one place that says **what OMC can configure and what each capability
|
|
9
|
-
covers**. Read it when you need to answer "能不能做 X?/ 用哪个能力?" yourself —
|
|
10
|
-
before you escalate the question to the user, and before you decide "X 要二开".
|
|
11
|
-
|
|
12
|
-
This topic is the **prose authority** for capability coverage; `omc capabilities`
|
|
13
|
-
/ `omc next` / `omc capability <id>` are its machine-readable projection over the
|
|
14
|
-
same 15 capabilities (a `verify` test fails if the two drift). A concrete wire
|
|
15
|
-
shape is always reached by `omc describe <tool> --example <recipe>` — this
|
|
16
|
-
catalogue only names the tool and the recipe, never re-specifies the payload.
|
|
17
|
-
|
|
18
|
-
**How to read it (progressive disclosure):** scan the 能力索引 table, then read
|
|
19
|
-
only the section for the capability you need —
|
|
20
|
-
`omc help omc-capabilities --section "<能力>"`. Do not load every section.
|
|
21
|
-
|
|
22
|
-
## 能力索引
|
|
23
|
-
|
|
24
|
-
| 能力 | 一句话 | 能做哪些事(需求线索) | 读哪节 |
|
|
25
|
-
| --- | --- | --- | --- |
|
|
26
|
-
| 环境治理 `environment` | 环境发现/指纹/就绪 | 环境、指纹、版本、连接、登录、就绪、发现 | [环境治理](#环境治理-environment) |
|
|
27
|
-
| 应用 `app` | 应用包生命周期 | 应用、门户、分组、app 建删移 | [应用](#应用-app) |
|
|
28
|
-
| 数据字典 `dictionary` | 字典与字典记录 | 字典、选项来源、树型、键值、字段下拉来源 | [数据字典](#数据字典-dictionary) |
|
|
29
|
-
| 业务模型 `model` | 模型生命周期 | 模型、对象、表、主数据、改名、物理删除 | [业务模型](#业务模型-model) |
|
|
30
|
-
| 字段 `field` | 字段族 + 子表 + **计算字段** | 字段、属性、子表、明细、下拉、单选、多选、附件、人员、部门、日期、数值、关联、**公式/计算/求和/汇总/合计/回主表** | [字段](#字段-field) |
|
|
31
|
-
| 默认表单 `form` | 表单布局与发布 | 表单、页面、布局、控件、只读、显示 | [默认表单](#默认表单-form) |
|
|
32
|
-
| 列表视图 `listview` | 列表表头与列 | 列表、视图、查询列、筛选、表头、甘特 | [列表视图](#列表视图-listview) |
|
|
33
|
-
| 字段级规则 `datarule` | 字段级控件规则 | 字段级规则、控件规则、校验规则、计算拼接、显示规则、条件必填/只读/显示 | [字段级规则](#字段级规则-datarule) |
|
|
34
|
-
| 业务规则 `businessrule` | 图形规则图 + **定时任务** | 业务规则、触发器、规则图、事件、BRANCH、BIZ_ACTION、**定时任务/定时/每天/周期/调度** | [业务规则](#业务规则-businessrule) |
|
|
35
|
-
| 规则生命周期 `rule-lifecycle` | 规则启停删 | 启用规则、停用规则、删除规则、规则启停 | [规则生命周期](#规则生命周期-rule-lifecycle) |
|
|
36
|
-
| 流程模板 `workflow` | 审批流程模板 | 流程、工作流、审批、节点、待办、流转、参与人、审批人 | [流程模板](#流程模板-workflow) |
|
|
37
|
-
| 表单在线 JS `onlinejs` | 表单脚本发布/回读 | 在线js、脚本、联动、onload、onvalidate | [表单在线 JS](#表单在线-js-onlinejs) |
|
|
38
|
-
| 业务集成 `bizservice` | 集成服务与方法 | 集成、接口、服务、回调、对接、外部系统、datasql、restful | [业务集成](#业务集成-bizservice) |
|
|
39
|
-
| 报表 `report` | 报表页 + BI 图表(**仅显式要求时**) | 报表、图表、看板、bi、dashboard(用户点名的才做) | [报表](#报表-report) |
|
|
40
|
-
| 运行数据 `data` | 业务记录读写 | 运行数据、提交数据、保存记录、查记录 | [运行数据](#运行数据-data) |
|
|
41
|
-
|
|
42
|
-
**边界**(不在覆盖内)见 [边界](#边界boundaries)。**落点判据**(配置 vs 二开)
|
|
43
|
-
的唯一权威源是 `cpdocs-guide` 的「落点」。
|
|
44
|
-
|
|
45
|
-
---
|
|
46
|
-
|
|
47
|
-
## 环境治理 `environment`
|
|
48
|
-
|
|
49
|
-
- **能做哪些事**:读环境指纹与版本桶(决定证据版本);就绪自检(登录/许可证/最小路径),写入开关与生产授权在 `omc setup`。
|
|
50
|
-
- **工具**:`discover_environment`、`environment.fingerprint`
|
|
51
|
-
- **边界 / 陷阱**:只读;不进 intent(用 `omc setup` / `discover_environment`)。写前一律先确认环境真相。
|
|
52
|
-
|
|
53
|
-
## 应用 `app`
|
|
54
|
-
|
|
55
|
-
- **能做哪些事**:列出应用包、创建、改名/分组移动、删除(删除级联其模型)。
|
|
56
|
-
- **工具**:`app.list`、`app.create`、`app.update`、`app.delete`
|
|
57
|
-
- **边界 / 陷阱**:环境已带默认 `applicationCode`,建模**不必**先建应用;未进 intent,用 `omc call app.*`。
|
|
58
|
-
|
|
59
|
-
## 数据字典 `dictionary`
|
|
60
|
-
|
|
61
|
-
- **能做哪些事**:字典与字典记录全生命周期(键值型/树型、启停);作为选择字段的选项来源;字典分类。
|
|
62
|
-
- **工具**:`dictionary.list`、`dictionary.type`、`dictionary.names`、`dictionary.get`、`dictionary.records`、`dictionary.save`、`dictionary.status`、`dictionary.usage`、`dictionary.parent`、`dictionary.classes`、`dictionary.class.save`、`dictionary.class.delete`
|
|
63
|
-
- **recipe**:`omc describe dictionary.save --example dictionary-key-value`
|
|
64
|
-
- **边界 / 陷阱**:选择字段有三种选项来源——`custom` / `dictionary` / `businessModel`;关联单选/多选支持 `searchFormula` 与 `conditions` JSON 筛选。
|
|
65
|
-
|
|
66
|
-
## 业务模型 `model`
|
|
67
|
-
|
|
68
|
-
- **能做哪些事**:模型创建、改名、物理删除(`absent:true` 回读)、存在性、批量删除、摘要;一次建模型+字段+表单用 `configure_model`。
|
|
69
|
-
- **工具**:`model.list`、`model.inspect`、`model.create`、`model.delete`、`model.deleteMany`、`model.setSummary`、`model.update`、`configure_model`
|
|
70
|
-
- **recipe**:`omc describe configure_model --example model-with-fields-form`
|
|
71
|
-
- **边界 / 陷阱**:`model.inspect <schemaCode>` 一次拿全字段/表单/列表/规则/流程摘要,别逐面 6 次调用。**保留 code**:字段 code 用 `name` 会被平台占用,须避开。**每个模型都必须建并发布默认表单**——只建模型不建/不发布表单则无法录入查看(`configure_form` 或 `form.draft(rebuild:true)` + `form.publish`)。**「汇总/统计/按月」类需求**:常见做法是**一张汇总表**(独立业务模型,如 `x_monthly_summary`)接住结果,用定时任务/规则把源数据汇总写进去——**但这按需求定**,不是写死的规则。需求确认时把"汇总表"作为常规选项提出来跟用户确认,别默认往报表或二开上引。
|
|
72
|
-
|
|
73
|
-
## 字段 `field`
|
|
74
|
-
|
|
75
|
-
- **单据号/自动编号(原生,勿二开)**:单据号是表单 **Serial Number 控件**(字段类型 100 SequenceNo)的 `options.seqNoSetting` 分段构建器(CONSTANT/DATE/SEQNO/DATAITEM/UID 段),SEQNO 段 `resetDate:DAY/MONTH/YEAR` 原生按期重置——`describe field.update --example field-serial-number`。**不要落 SequenceService SPI 二开**(r5-crm 实证重造轮子);编号生成时机=submit(`data.save` 不生成)。
|
|
76
|
-
|
|
77
|
-
- **能做哪些事**:字段族全链 create→publish→表单绑定;**CHILD_TABLE 子表**(子列是 schemaCode=父字段 code 上的普通字段);**计算字段**(默认用普通字段 + 「计算规则」,见下)。
|
|
78
|
-
- **工具**:`field.list`、`field.create`、`field.update`、`field.publish`、`field.delete`
|
|
79
|
-
- **recipe**:
|
|
80
|
-
- `omc describe field.create --example numeric-two-decimals`(数值 + scale)
|
|
81
|
-
- `omc describe field.create --example dictionary-backed-single-select`
|
|
82
|
-
- `omc describe field.create --example minimal-child-table`(子表 + 标量子列)
|
|
83
|
-
- `omc describe field.create --example business-model-dropdown`
|
|
84
|
-
- **边界 / 陷阱**:
|
|
85
|
-
- **计算类需求默认走「普通字段 + 计算规则」,不要建「计算公式」字段类型(FORMULA)**:建一个**数值/单行文本**业务字段,再配一条**字段级计算规则**(`datarule.create` `dataRuleType:2`,`options.shortTextStitch={"formula","editorText","editorMark"}`)。理由:平台约定用正常业务字段承载、顺带配计算规则(真机 2026-10-08 production 表单核验 + 设计器弹窗显示)。「计算公式」字段类型不是默认,仅当确需一列专用公式时才用。
|
|
86
|
-
- **计算规则公式引用**:同类字段裸 `{字段code}`(`{a}+{b}`);**子表列用 `{子表字段code.子列code}`**(`{Sub_item_information_table.taxInclusiveAmount}`);子表求和 `SUM({子表.子列})`;支持 `IF(cond,a,b)`、`CASE(v,c1,r1,c2,r2)`、`VALUE()`、`AND`、比较 `=`、字符串字面量与运算符空格。recipe:`omc describe datarule.create --example field-compute-rule|field-compute-subtable-sum|field-compute-child-column`。
|
|
87
|
-
- 计算由**门户前端**执行,API(`data.save/update`)不回填/重算——写测试数据带预算值,正确性人工前台确认。(FORMULA 字段类型仍受支持,但非默认。)
|
|
88
|
-
- 计算由**门户前端**执行,API(`data.save/update`)不回填/重算——写测试数据带预算值,正确性人工前台确认。
|
|
89
|
-
- 子表列支持标量族 + WORK_SHEET 关联列(需 `relativeCode`+options);**嵌套子表 / MULT_WORK_SHEET / RELEVANCE_DATA 不覆盖**。
|
|
90
|
-
|
|
91
|
-
## 默认表单 `form`
|
|
92
|
-
|
|
93
|
-
- **能做哪些事**:表单 draft-first 布局、发布、`publishedHtmlJson` 绑定读回;把已发布字段绑进默认表单。
|
|
94
|
-
- **工具**:`form.get`、`form.draft`、`form.publish`、`configure_form`
|
|
95
|
-
- **recipe**:`omc describe configure_form --example publish-default-form`
|
|
96
|
-
- **边界 / 陷阱**:默认表单已存在,用 `configure_form`/`form.draft(rebuild)`
|
|
97
|
-
- **每个模型交付前其默认表单必须已发布**:只建草稿=用户无法录入/查看。用 `configure_form` 或 `form.draft(rebuild:true)`+`form.publish` 发布。
|
|
98
|
-
- **发布态以 `form.get` 的 `published`/`existDraft` 布尔为准**,不要看 `publishedControlCodes` 是否非空(草稿字段也非空,会误判)。交付前列出每个模型的 `form.get.published` 核对。
|
|
99
|
-
- **写业务数据的前提是先发布模型+表单**:正确顺序 = 建模型 → 发布字段(`field.publish`)→ 建并**发布**默认表单(`form.publish`)→ 才 `data.save`/`data.submit`。不要在建/未发布状态下写业务数据。
|
|
100
|
-
|
|
101
|
-
## 列表视图 `listview`
|
|
102
|
-
|
|
103
|
-
- **能做哪些事**:视图表头列、排序、筛选条件生命周期(create/configure/delete)。
|
|
104
|
-
- **工具**:`listview.get`、`listview.list`、`listview.create`、`listview.configure`、`listview.delete`
|
|
105
|
-
- **recipe**:`omc describe listview.configure --example configure-default-list`
|
|
106
|
-
- **边界 / 陷阱**:默认视图已存在,`listview.configure` 省略 code 即配置默认视图。**按字段分组(queryLayer)未取证**——别猜写。
|
|
107
|
-
|
|
108
|
-
## 字段级规则 `datarule`
|
|
109
|
-
|
|
110
|
-
- **能做哪些事**:字段级数据规则(bizdatarule)create/update/delete;条件必填(type4)、条件只读(type5)、条件显示(type3)、计算拼接(type2)等,按平台校验器闭环。
|
|
111
|
-
- **工具**:`datarule.list`、`datarule.create`、`datarule.update`、`datarule.delete`
|
|
112
|
-
- **recipe**:
|
|
113
|
-
- `omc describe datarule.create --example datarule-conditional-required`
|
|
114
|
-
- `omc describe datarule.create --example datarule-conditional-readonly`
|
|
115
|
-
- `omc describe datarule.create --example datarule-conditional-display`
|
|
116
|
-
- **边界 / 陷阱**:目标字段必须已发布;同一字段多条规则时 update/delete 必须带 `dataRuleType` 去歧义。
|
|
117
|
-
|
|
118
|
-
## 业务规则 `businessrule`
|
|
119
|
-
|
|
120
|
-
- **能做哪些事**:图形规则图(nodeGraph)——数据事件(Create/Update/Delete)触发、按钮/流程触发、动作节点(UPDATE/CREATE/DELETE/QUERY/ASSIGN/MESSAGE/BIZ_ACTION/GET_LIST…)、BRANCH 条件分支、**定时任务 TIMING_TASK**(每天/周期,SCHEDULER 节点)。
|
|
121
|
-
- **工具**:`rule.list`、`rule.get`、`rule.save`、`rule.node.update`
|
|
122
|
-
- **recipe**:
|
|
123
|
-
- `omc describe rule.save --example standard-business-rule-graph`
|
|
124
|
-
- `omc describe rule.save --example business-rule-branch-conditional`
|
|
125
|
-
- `omc describe rule.save --example rule-timing-task`(**每天/周期定时执行**)
|
|
126
|
-
- **边界 / 陷阱**:
|
|
127
|
-
- **「每天定时执行」= 定时任务 TIMING_TASK,是平台原生配置,不是外部定时器、不是在线 JS、无需二开**;`nodeGraph.bizRuleType:2` + SCHEDULER 节点 + `nodeGraph.schedulerSetting`。
|
|
128
|
-
- 数据事件只分发到平台预置 code 行(Create/Update/Delete);自定义 ruleCode 需按钮/流程/定时/显式触发。
|
|
129
|
-
- 保存 ≠ 可见,需 `rule.enable`(见 rule-lifecycle;绑流程事件前必须 enable,否则运行时 Business rule does not exist——r3-wms 实测)。BRANCH 多出口是「全部命中即走」,分级互斥用嵌套 BRANCH。
|
|
130
|
-
- **无存在性/计数判定原语**:BRANCH 不能按「QUERY 是否返回行」分支(PRE_OUT 分支不接收 QUERY 空结果,r3-wms 实测)。因此**硬拦保存做不到**(重复校验只能降级为打标,且**规则图内 QUERY→UPDATE 打标会静默空转**(8.6.26 UPDATE 的 inputParam 只认触发行 `_input`,`_QN_output` 引用被忽略——r4-fin 双跑实证 2026-10-09)。唯一可靠路径=改写预置 Create 规则挂 BIZ_ACTION 自调二开 markDuplicates(见 `describe rule.save --example data-duplicate-flag`))。
|
|
131
|
-
|
|
132
|
-
## 规则生命周期 `rule-lifecycle`
|
|
133
|
-
|
|
134
|
-
- **能做哪些事**:业务规则的启用、停用、批量停用、删除。
|
|
135
|
-
- **工具**:`rule.enable`、`rule.disable`、`rule.delete`、`rule.disableMany`、`configure_rule`
|
|
136
|
-
- **边界 / 陷阱**:`enabled` 是运行时真相,`status` 可能滞后。`rule.disableMany` 默认含预置行,`customOnly:true` 只停自定义。
|
|
137
|
-
|
|
138
|
-
## 流程模板 `workflow`
|
|
139
|
-
|
|
140
|
-
- **能做哪些事**:流程模板 get_draft/get_published、create、update、publish、bindRule(事件处理器规则绑定)、delete、workitem.list;参与人用组织对象。
|
|
141
|
-
- **工具**:`workflow.get_draft`、`workflow.get_published`、`workflow.validate`、`workflow.create`、`workflow.update`、`workflow.publish`、`workflow.bindRule`、`workflow.delete`、`configure_workflow`、`workitem.list`、`org.role.list`、`org.department.list`、`org.user.search`
|
|
142
|
-
- **recipe**:`omc describe workflow.bindRule --example workflow-handler-binding`
|
|
143
|
-
- **边界 / 陷阱**:greenfield 首版;`publish`/`bindRule` 不得在 `ValidateMessage[]` 拒绝时报告成功。运行时 workitem(提交/审批)走 `data.submit`。
|
|
144
|
-
|
|
145
|
-
## 表单在线 JS `onlinejs`
|
|
146
|
-
|
|
147
|
-
- **能做哪些事**:表单在线 JS 的 compose 六元素骨架、`draftHtmlJson.customScript`、发布与 SHA-256 回读(脚本**编写**不在 CLI 范围,遵循项目在线 JS 规范或向用户索取定稿 source)。
|
|
148
|
-
- **工具**:`onlinejs.compose`
|
|
149
|
-
- **边界 / 陷阱**:仅表单在线 JS;后端在线开发(`/api/api/programming` Java 源码)用二开扩展包,不在 CLI 范围。
|
|
150
|
-
|
|
151
|
-
## 业务集成 `bizservice`
|
|
152
|
-
|
|
153
|
-
- **能做哪些事**:业务服务与方法注册(RESTFUL/DATA_SQL/DATA_TABLE/SAP/KAFKA/SOAP
|
|
154
|
-
- **工具**:`service.get`、`method.get`、`method.update`、`method.create`、`method.delete`、`service.category.list`、`service.category.create`、`service.category.update`、`service.category.delete`、`service.dbconnpool.list`、`service.dbconnpool.create`、`service.dbconnpool.update`、`service.dbconnpool.delete`、`service.adapter_config`、`service.table_list`、`service.table_sql`、`service.register`、`service.update`、`service.delete`、`service.export`、`service.check`、`service.import`、`method.test`
|
|
155
|
-
- **recipe**:`omc describe service.register --example restful-query-service`
|
|
156
|
-
- **边界 / 陷阱**:方法 `configJson` 走 AES-128-ECB;**二开接口 = 扩展模块写 REST 接口 + RESTFUL 服务指向它**(页面/规则引用);RESTFUL/DATA_SQL 绑定前须带适配器必需配置(否则是注册壳)。
|
|
157
|
-
|
|
158
|
-
## 报表 `report`
|
|
159
|
-
|
|
160
|
-
- **能做哪些事**:报表树/元数据读取、报表页建改删、BI dashboard 配置、图表增改删、图表数据查询、数据集读取/关联。
|
|
161
|
-
- **工具**:`report.tree`、`report.get`、`report.chartdata`、`report.datasource.list`、`report.datasource.link`、`report.create`、`report.update`、`report.delete`、`report.configure`
|
|
162
|
-
- **边界 / 陷阱**:
|
|
163
|
-
- **`report` 是"按需出现"的能力:只有用户显式要求报表 / 图表 / 看板 / dashboard 时才使用。常规开发流程不产出报表——不要在方案/存疑清单里对"统计/汇总/按月"之类的需求主动引入 `report`。**
|
|
164
|
-
- **跨对象统计聚合(如"按月按客户统计金额")默认不落 `report`**:先看能否用字段/查询配置表达;表达不了就落二开聚合接口(扩展写接口 + RESTFUL),**不要默认引 BI/报表**。报表是另一条独立交付物,需用户点名。
|
|
165
|
-
- 报表页走 `/api/api/report/*`;BI 走 `/dashboard/v1/*`(无 errcode 信封,body 必带 `config:{token,reportCode,appCode}`,缺则静默 no-op);外层 `corpId` 是真实查询键,默认 `"a"`。
|
|
166
|
-
|
|
167
|
-
## 运行数据 `data`
|
|
168
|
-
|
|
169
|
-
- **能做哪些事**:业务记录列出、加载、保存、更新、删除、提交(工作流)。
|
|
170
|
-
- **工具**:`data.list`、`data.load`、`data.save`、`data.update`、`data.delete`、`data.submit`
|
|
171
|
-
- **recipe**:
|
|
172
|
-
- `omc describe data.save --example workflow-backed-data-save`
|
|
173
|
-
- `omc describe data.submit --example workflow-backed-data-submit`
|
|
174
|
-
- **边界 / 陷阱**:读实际业务记录是 OMC 独有能力。**计算字段(FORMULA/子表计算)不由 API 回填**——写测试数据带预算值,公式正确性人工前台确认;带子表计算字段的模型 API 写可能 50000(服务端重算 NPE),前台正常。
|
|
175
|
-
|
|
176
|
-
---
|
|
177
|
-
|
|
178
|
-
## 边界(boundaries)
|
|
179
|
-
|
|
180
|
-
这些面**不在配置覆盖内**。被挡/不支持是**明确的答复**,不是要绕过的障碍——如实报告,不要用相近能力伪造。
|
|
181
|
-
|
|
182
|
-
| 面 | 状态 | 说明 |
|
|
183
|
-
| --- | --- | --- |
|
|
184
|
-
| 权限 / 授权矩阵 | blocked | 授权矩阵不在配置面 |
|
|
185
|
-
| 嵌套子表(子表套子表) | blocked | 一级子表可用,嵌套不可 |
|
|
186
|
-
| OCR / 电子签章 / 发票识别 | unsupported | 不在平台配置覆盖内 |
|
|
187
|
-
| 应用发布 / 环境上线 / 生产发布 | unsupported | CLI 只做配置,不做环境发布 |
|
|
188
|
-
| 在线后端编码 / EXECUTE_CODE / ONLINE_DEVELOP | unsupported | 用二开扩展包,不用在线 JS 伪造 |
|
|
189
|
-
|
|
190
|
-
> `blocked` / `unsupported` 是**原生配置**的判定,通常把行为路由到另一个代码所有者(`配置 + 后端扩展`),**不等于**需求不可交付。把 blocked face 编译成「做不了、留人工」是失败模式。
|
|
191
|
-
|
|
192
|
-
## 相关 topic
|
|
193
|
-
|
|
194
|
-
- 需求分析(定面/归类/选路):`omc-requirement-analysis`;线索词表:`omc-requirement-vocabulary`
|
|
195
|
-
- 用哪个工具最省:`omc-tool-selection`;写前人审门:`omc-config-draft-review`
|
|
196
|
-
- 被拒/状态异常:`omc-refusals`;新面取证:`omc-capability-scouting`
|
|
197
|
-
- 每能力的配置怎么配:`omc-business-configuration` 的对应节;写入风险:`omc-write-hazards`
|
|
1
|
+
---
|
|
2
|
+
name: omc-capabilities
|
|
3
|
+
description: The OMC capability catalogue — what each capability can do, its tools, recipes, and boundaries. Use to answer "can OMC/platform do X?" and to find the tool for X before discovery.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Capability Catalogue (能力总表)
|
|
7
|
+
|
|
8
|
+
The one place that says **what OMC can configure and what each capability
|
|
9
|
+
covers**. Read it when you need to answer "能不能做 X?/ 用哪个能力?" yourself —
|
|
10
|
+
before you escalate the question to the user, and before you decide "X 要二开".
|
|
11
|
+
|
|
12
|
+
This topic is the **prose authority** for capability coverage; `omc capabilities`
|
|
13
|
+
/ `omc next` / `omc capability <id>` are its machine-readable projection over the
|
|
14
|
+
same 15 capabilities (a `verify` test fails if the two drift). A concrete wire
|
|
15
|
+
shape is always reached by `omc describe <tool> --example <recipe>` — this
|
|
16
|
+
catalogue only names the tool and the recipe, never re-specifies the payload.
|
|
17
|
+
|
|
18
|
+
**How to read it (progressive disclosure):** scan the 能力索引 table, then read
|
|
19
|
+
only the section for the capability you need —
|
|
20
|
+
`omc help omc-capabilities --section "<能力>"`. Do not load every section.
|
|
21
|
+
|
|
22
|
+
## 能力索引
|
|
23
|
+
|
|
24
|
+
| 能力 | 一句话 | 能做哪些事(需求线索) | 读哪节 |
|
|
25
|
+
| --- | --- | --- | --- |
|
|
26
|
+
| 环境治理 `environment` | 环境发现/指纹/就绪 | 环境、指纹、版本、连接、登录、就绪、发现 | [环境治理](#环境治理-environment) |
|
|
27
|
+
| 应用 `app` | 应用包生命周期 | 应用、门户、分组、app 建删移 | [应用](#应用-app) |
|
|
28
|
+
| 数据字典 `dictionary` | 字典与字典记录 | 字典、选项来源、树型、键值、字段下拉来源 | [数据字典](#数据字典-dictionary) |
|
|
29
|
+
| 业务模型 `model` | 模型生命周期 | 模型、对象、表、主数据、改名、物理删除 | [业务模型](#业务模型-model) |
|
|
30
|
+
| 字段 `field` | 字段族 + 子表 + **计算字段** | 字段、属性、子表、明细、下拉、单选、多选、附件、人员、部门、日期、数值、关联、**公式/计算/求和/汇总/合计/回主表** | [字段](#字段-field) |
|
|
31
|
+
| 默认表单 `form` | 表单布局与发布 | 表单、页面、布局、控件、只读、显示 | [默认表单](#默认表单-form) |
|
|
32
|
+
| 列表视图 `listview` | 列表表头与列 | 列表、视图、查询列、筛选、表头、甘特 | [列表视图](#列表视图-listview) |
|
|
33
|
+
| 字段级规则 `datarule` | 字段级控件规则 | 字段级规则、控件规则、校验规则、计算拼接、显示规则、条件必填/只读/显示 | [字段级规则](#字段级规则-datarule) |
|
|
34
|
+
| 业务规则 `businessrule` | 图形规则图 + **定时任务** | 业务规则、触发器、规则图、事件、BRANCH、BIZ_ACTION、**定时任务/定时/每天/周期/调度** | [业务规则](#业务规则-businessrule) |
|
|
35
|
+
| 规则生命周期 `rule-lifecycle` | 规则启停删 | 启用规则、停用规则、删除规则、规则启停 | [规则生命周期](#规则生命周期-rule-lifecycle) |
|
|
36
|
+
| 流程模板 `workflow` | 审批流程模板 | 流程、工作流、审批、节点、待办、流转、参与人、审批人 | [流程模板](#流程模板-workflow) |
|
|
37
|
+
| 表单在线 JS `onlinejs` | 表单脚本发布/回读 | 在线js、脚本、联动、onload、onvalidate | [表单在线 JS](#表单在线-js-onlinejs) |
|
|
38
|
+
| 业务集成 `bizservice` | 集成服务与方法 | 集成、接口、服务、回调、对接、外部系统、datasql、restful | [业务集成](#业务集成-bizservice) |
|
|
39
|
+
| 报表 `report` | 报表页 + BI 图表(**仅显式要求时**) | 报表、图表、看板、bi、dashboard(用户点名的才做) | [报表](#报表-report) |
|
|
40
|
+
| 运行数据 `data` | 业务记录读写 | 运行数据、提交数据、保存记录、查记录 | [运行数据](#运行数据-data) |
|
|
41
|
+
|
|
42
|
+
**边界**(不在覆盖内)见 [边界](#边界boundaries)。**落点判据**(配置 vs 二开)
|
|
43
|
+
的唯一权威源是 `cpdocs-guide` 的「落点」。
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## 环境治理 `environment`
|
|
48
|
+
|
|
49
|
+
- **能做哪些事**:读环境指纹与版本桶(决定证据版本);就绪自检(登录/许可证/最小路径),写入开关与生产授权在 `omc setup`。
|
|
50
|
+
- **工具**:`discover_environment`、`environment.fingerprint`
|
|
51
|
+
- **边界 / 陷阱**:只读;不进 intent(用 `omc setup` / `discover_environment`)。写前一律先确认环境真相。
|
|
52
|
+
|
|
53
|
+
## 应用 `app`
|
|
54
|
+
|
|
55
|
+
- **能做哪些事**:列出应用包、创建、改名/分组移动、删除(删除级联其模型)。
|
|
56
|
+
- **工具**:`app.list`、`app.create`、`app.update`、`app.delete`
|
|
57
|
+
- **边界 / 陷阱**:环境已带默认 `applicationCode`,建模**不必**先建应用;未进 intent,用 `omc call app.*`。
|
|
58
|
+
|
|
59
|
+
## 数据字典 `dictionary`
|
|
60
|
+
|
|
61
|
+
- **能做哪些事**:字典与字典记录全生命周期(键值型/树型、启停);作为选择字段的选项来源;字典分类。
|
|
62
|
+
- **工具**:`dictionary.list`、`dictionary.type`、`dictionary.names`、`dictionary.get`、`dictionary.records`、`dictionary.save`、`dictionary.status`、`dictionary.usage`、`dictionary.parent`、`dictionary.classes`、`dictionary.class.save`、`dictionary.class.delete`
|
|
63
|
+
- **recipe**:`omc describe dictionary.save --example dictionary-key-value`
|
|
64
|
+
- **边界 / 陷阱**:选择字段有三种选项来源——`custom` / `dictionary` / `businessModel`;关联单选/多选支持 `searchFormula` 与 `conditions` JSON 筛选。
|
|
65
|
+
|
|
66
|
+
## 业务模型 `model`
|
|
67
|
+
|
|
68
|
+
- **能做哪些事**:模型创建、改名、物理删除(`absent:true` 回读)、存在性、批量删除、摘要;一次建模型+字段+表单用 `configure_model`。
|
|
69
|
+
- **工具**:`model.list`、`model.inspect`、`model.create`、`model.delete`、`model.deleteMany`、`model.setSummary`、`model.update`、`configure_model`
|
|
70
|
+
- **recipe**:`omc describe configure_model --example model-with-fields-form`
|
|
71
|
+
- **边界 / 陷阱**:`model.inspect <schemaCode>` 一次拿全字段/表单/列表/规则/流程摘要,别逐面 6 次调用。**保留 code**:字段 code 用 `name` 会被平台占用,须避开。**每个模型都必须建并发布默认表单**——只建模型不建/不发布表单则无法录入查看(`configure_form` 或 `form.draft(rebuild:true)` + `form.publish`)。**「汇总/统计/按月」类需求**:常见做法是**一张汇总表**(独立业务模型,如 `x_monthly_summary`)接住结果,用定时任务/规则把源数据汇总写进去——**但这按需求定**,不是写死的规则。需求确认时把"汇总表"作为常规选项提出来跟用户确认,别默认往报表或二开上引。
|
|
72
|
+
|
|
73
|
+
## 字段 `field`
|
|
74
|
+
|
|
75
|
+
- **单据号/自动编号(原生,勿二开)**:单据号是表单 **Serial Number 控件**(字段类型 100 SequenceNo)的 `options.seqNoSetting` 分段构建器(CONSTANT/DATE/SEQNO/DATAITEM/UID 段),SEQNO 段 `resetDate:DAY/MONTH/YEAR` 原生按期重置——`describe field.update --example field-serial-number`。**不要落 SequenceService SPI 二开**(r5-crm 实证重造轮子);编号生成时机=submit(`data.save` 不生成)。
|
|
76
|
+
|
|
77
|
+
- **能做哪些事**:字段族全链 create→publish→表单绑定;**CHILD_TABLE 子表**(子列是 schemaCode=父字段 code 上的普通字段);**计算字段**(默认用普通字段 + 「计算规则」,见下)。
|
|
78
|
+
- **工具**:`field.list`、`field.create`、`field.update`、`field.publish`、`field.delete`
|
|
79
|
+
- **recipe**:
|
|
80
|
+
- `omc describe field.create --example numeric-two-decimals`(数值 + scale)
|
|
81
|
+
- `omc describe field.create --example dictionary-backed-single-select`
|
|
82
|
+
- `omc describe field.create --example minimal-child-table`(子表 + 标量子列)
|
|
83
|
+
- `omc describe field.create --example business-model-dropdown`
|
|
84
|
+
- **边界 / 陷阱**:
|
|
85
|
+
- **计算类需求默认走「普通字段 + 计算规则」,不要建「计算公式」字段类型(FORMULA)**:建一个**数值/单行文本**业务字段,再配一条**字段级计算规则**(`datarule.create` `dataRuleType:2`,`options.shortTextStitch={"formula","editorText","editorMark"}`)。理由:平台约定用正常业务字段承载、顺带配计算规则(真机 2026-10-08 production 表单核验 + 设计器弹窗显示)。「计算公式」字段类型不是默认,仅当确需一列专用公式时才用。
|
|
86
|
+
- **计算规则公式引用**:同类字段裸 `{字段code}`(`{a}+{b}`);**子表列用 `{子表字段code.子列code}`**(`{Sub_item_information_table.taxInclusiveAmount}`);子表求和 `SUM({子表.子列})`;支持 `IF(cond,a,b)`、`CASE(v,c1,r1,c2,r2)`、`VALUE()`、`AND`、比较 `=`、字符串字面量与运算符空格。recipe:`omc describe datarule.create --example field-compute-rule|field-compute-subtable-sum|field-compute-child-column`。
|
|
87
|
+
- 计算由**门户前端**执行,API(`data.save/update`)不回填/重算——写测试数据带预算值,正确性人工前台确认。(FORMULA 字段类型仍受支持,但非默认。)
|
|
88
|
+
- 计算由**门户前端**执行,API(`data.save/update`)不回填/重算——写测试数据带预算值,正确性人工前台确认。
|
|
89
|
+
- 子表列支持标量族 + WORK_SHEET 关联列(需 `relativeCode`+options);**嵌套子表 / MULT_WORK_SHEET / RELEVANCE_DATA 不覆盖**。
|
|
90
|
+
|
|
91
|
+
## 默认表单 `form`
|
|
92
|
+
|
|
93
|
+
- **能做哪些事**:表单 draft-first 布局、发布、`publishedHtmlJson` 绑定读回;把已发布字段绑进默认表单。
|
|
94
|
+
- **工具**:`form.get`、`form.draft`、`form.publish`、`configure_form`
|
|
95
|
+
- **recipe**:`omc describe configure_form --example publish-default-form`
|
|
96
|
+
- **边界 / 陷阱**:默认表单已存在,用 `configure_form`/`form.draft(rebuild)`/`form.publish(rebuild:true)` 改它,不要新建;改字段形状后刷新表单一调用 `form.publish rebuild:true`。
|
|
97
|
+
- **每个模型交付前其默认表单必须已发布**:只建草稿=用户无法录入/查看。用 `configure_form` 或 `form.draft(rebuild:true)`+`form.publish` 发布。
|
|
98
|
+
- **发布态以 `form.get` 的 `published`/`existDraft` 布尔为准**,不要看 `publishedControlCodes` 是否非空(草稿字段也非空,会误判)。交付前列出每个模型的 `form.get.published` 核对。
|
|
99
|
+
- **写业务数据的前提是先发布模型+表单**:正确顺序 = 建模型 → 发布字段(`field.publish`)→ 建并**发布**默认表单(`form.publish`)→ 才 `data.save`/`data.submit`。不要在建/未发布状态下写业务数据。
|
|
100
|
+
|
|
101
|
+
## 列表视图 `listview`
|
|
102
|
+
|
|
103
|
+
- **能做哪些事**:视图表头列、排序、筛选条件生命周期(create/configure/delete)。
|
|
104
|
+
- **工具**:`listview.get`、`listview.list`、`listview.create`、`listview.configure`、`listview.delete`
|
|
105
|
+
- **recipe**:`omc describe listview.configure --example configure-default-list`
|
|
106
|
+
- **边界 / 陷阱**:默认视图已存在,`listview.configure` 省略 code 即配置默认视图。**按字段分组(queryLayer)未取证**——别猜写。
|
|
107
|
+
|
|
108
|
+
## 字段级规则 `datarule`
|
|
109
|
+
|
|
110
|
+
- **能做哪些事**:字段级数据规则(bizdatarule)create/update/delete;条件必填(type4)、条件只读(type5)、条件显示(type3)、计算拼接(type2)等,按平台校验器闭环。
|
|
111
|
+
- **工具**:`datarule.list`、`datarule.create`、`datarule.update`、`datarule.delete`
|
|
112
|
+
- **recipe**:
|
|
113
|
+
- `omc describe datarule.create --example datarule-conditional-required`
|
|
114
|
+
- `omc describe datarule.create --example datarule-conditional-readonly`
|
|
115
|
+
- `omc describe datarule.create --example datarule-conditional-display`
|
|
116
|
+
- **边界 / 陷阱**:目标字段必须已发布;同一字段多条规则时 update/delete 必须带 `dataRuleType` 去歧义。
|
|
117
|
+
|
|
118
|
+
## 业务规则 `businessrule`
|
|
119
|
+
|
|
120
|
+
- **能做哪些事**:图形规则图(nodeGraph)——数据事件(Create/Update/Delete)触发、按钮/流程触发、动作节点(UPDATE/CREATE/DELETE/QUERY/ASSIGN/MESSAGE/BIZ_ACTION/GET_LIST…)、BRANCH 条件分支、**定时任务 TIMING_TASK**(每天/周期,SCHEDULER 节点)。
|
|
121
|
+
- **工具**:`rule.list`、`rule.get`、`rule.save`、`rule.node.update`
|
|
122
|
+
- **recipe**:
|
|
123
|
+
- `omc describe rule.save --example standard-business-rule-graph`
|
|
124
|
+
- `omc describe rule.save --example business-rule-branch-conditional`
|
|
125
|
+
- `omc describe rule.save --example rule-timing-task`(**每天/周期定时执行**)
|
|
126
|
+
- **边界 / 陷阱**:
|
|
127
|
+
- **「每天定时执行」= 定时任务 TIMING_TASK,是平台原生配置,不是外部定时器、不是在线 JS、无需二开**;`nodeGraph.bizRuleType:2` + SCHEDULER 节点 + `nodeGraph.schedulerSetting`。
|
|
128
|
+
- 数据事件只分发到平台预置 code 行(Create/Update/Delete);自定义 ruleCode 需按钮/流程/定时/显式触发。
|
|
129
|
+
- 保存 ≠ 可见,需 `rule.enable`(见 rule-lifecycle;绑流程事件前必须 enable,否则运行时 Business rule does not exist——r3-wms 实测)。BRANCH 多出口是「全部命中即走」,分级互斥用嵌套 BRANCH。
|
|
130
|
+
- **无存在性/计数判定原语**:BRANCH 不能按「QUERY 是否返回行」分支(PRE_OUT 分支不接收 QUERY 空结果,r3-wms 实测)。因此**硬拦保存做不到**(重复校验只能降级为打标,且**规则图内 QUERY→UPDATE 打标会静默空转**(8.6.26 UPDATE 的 inputParam 只认触发行 `_input`,`_QN_output` 引用被忽略——r4-fin 双跑实证 2026-10-09)。唯一可靠路径=改写预置 Create 规则挂 BIZ_ACTION 自调二开 markDuplicates(见 `describe rule.save --example data-duplicate-flag`))。
|
|
131
|
+
|
|
132
|
+
## 规则生命周期 `rule-lifecycle`
|
|
133
|
+
|
|
134
|
+
- **能做哪些事**:业务规则的启用、停用、批量停用、删除。
|
|
135
|
+
- **工具**:`rule.enable`、`rule.disable`、`rule.delete`、`rule.disableMany`、`configure_rule`
|
|
136
|
+
- **边界 / 陷阱**:`enabled` 是运行时真相,`status` 可能滞后。`rule.disableMany` 默认含预置行,`customOnly:true` 只停自定义。
|
|
137
|
+
|
|
138
|
+
## 流程模板 `workflow`
|
|
139
|
+
|
|
140
|
+
- **能做哪些事**:流程模板 get_draft/get_published、create、update、publish、bindRule(事件处理器规则绑定)、delete、workitem.list;参与人用组织对象。
|
|
141
|
+
- **工具**:`workflow.get_draft`、`workflow.get_published`、`workflow.validate`、`workflow.create`、`workflow.update`、`workflow.publish`、`workflow.bindRule`、`workflow.delete`、`configure_workflow`、`workitem.list`、`org.role.list`、`org.department.list`、`org.user.search`
|
|
142
|
+
- **recipe**:`omc describe workflow.bindRule --example workflow-handler-binding`
|
|
143
|
+
- **边界 / 陷阱**:greenfield 首版;`publish`/`bindRule` 不得在 `ValidateMessage[]` 拒绝时报告成功。运行时 workitem(提交/审批)走 `data.submit`。
|
|
144
|
+
|
|
145
|
+
## 表单在线 JS `onlinejs`
|
|
146
|
+
|
|
147
|
+
- **能做哪些事**:表单在线 JS 的 compose 六元素骨架、`draftHtmlJson.customScript`、发布与 SHA-256 回读(脚本**编写**不在 CLI 范围,遵循项目在线 JS 规范或向用户索取定稿 source)。
|
|
148
|
+
- **工具**:`onlinejs.compose`
|
|
149
|
+
- **边界 / 陷阱**:仅表单在线 JS;后端在线开发(`/api/api/programming` Java 源码)用二开扩展包,不在 CLI 范围。
|
|
150
|
+
|
|
151
|
+
## 业务集成 `bizservice`
|
|
152
|
+
|
|
153
|
+
- **能做哪些事**:业务服务与方法注册(RESTFUL/DATA_SQL/DATA_TABLE/SAP/KAFKA/SOAP)、服务清单(按分类/关键词,凭据不回显)、方法增改删、分类/连接池、导入导出、设计器测试。
|
|
154
|
+
- **工具**:`service.list`、`service.get`、`method.get`、`method.update`、`method.create`、`method.delete`、`service.category.list`、`service.category.create`、`service.category.update`、`service.category.delete`、`service.dbconnpool.list`、`service.dbconnpool.create`、`service.dbconnpool.update`、`service.dbconnpool.delete`、`service.adapter_config`、`service.table_list`、`service.table_sql`、`service.register`、`service.update`、`service.delete`、`service.export`、`service.check`、`service.import`、`method.test`
|
|
155
|
+
- **recipe**:`omc describe service.register --example restful-query-service`
|
|
156
|
+
- **边界 / 陷阱**:方法 `configJson` 走 AES-128-ECB;**二开接口 = 扩展模块写 REST 接口 + RESTFUL 服务指向它**(页面/规则引用);RESTFUL/DATA_SQL 绑定前须带适配器必需配置(否则是注册壳)。
|
|
157
|
+
|
|
158
|
+
## 报表 `report`
|
|
159
|
+
|
|
160
|
+
- **能做哪些事**:报表树/元数据读取、报表页建改删、BI dashboard 配置、图表增改删、图表数据查询、数据集读取/关联。
|
|
161
|
+
- **工具**:`report.tree`、`report.get`、`report.chartdata`、`report.datasource.list`、`report.datasource.link`、`report.create`、`report.update`、`report.delete`、`report.configure`
|
|
162
|
+
- **边界 / 陷阱**:
|
|
163
|
+
- **`report` 是"按需出现"的能力:只有用户显式要求报表 / 图表 / 看板 / dashboard 时才使用。常规开发流程不产出报表——不要在方案/存疑清单里对"统计/汇总/按月"之类的需求主动引入 `report`。**
|
|
164
|
+
- **跨对象统计聚合(如"按月按客户统计金额")默认不落 `report`**:先看能否用字段/查询配置表达;表达不了就落二开聚合接口(扩展写接口 + RESTFUL),**不要默认引 BI/报表**。报表是另一条独立交付物,需用户点名。
|
|
165
|
+
- 报表页走 `/api/api/report/*`;BI 走 `/dashboard/v1/*`(无 errcode 信封,body 必带 `config:{token,reportCode,appCode}`,缺则静默 no-op);外层 `corpId` 是真实查询键,默认 `"a"`。
|
|
166
|
+
|
|
167
|
+
## 运行数据 `data`
|
|
168
|
+
|
|
169
|
+
- **能做哪些事**:业务记录列出、加载、保存、更新、删除、提交(工作流)。
|
|
170
|
+
- **工具**:`data.list`、`data.load`、`data.save`、`data.update`、`data.delete`、`data.submit`
|
|
171
|
+
- **recipe**:
|
|
172
|
+
- `omc describe data.save --example workflow-backed-data-save`
|
|
173
|
+
- `omc describe data.submit --example workflow-backed-data-submit`
|
|
174
|
+
- **边界 / 陷阱**:读实际业务记录是 OMC 独有能力。**计算字段(FORMULA/子表计算)不由 API 回填**——写测试数据带预算值,公式正确性人工前台确认;带子表计算字段的模型 API 写可能 50000(服务端重算 NPE),前台正常。
|
|
175
|
+
|
|
176
|
+
---
|
|
177
|
+
|
|
178
|
+
## 边界(boundaries)
|
|
179
|
+
|
|
180
|
+
这些面**不在配置覆盖内**。被挡/不支持是**明确的答复**,不是要绕过的障碍——如实报告,不要用相近能力伪造。
|
|
181
|
+
|
|
182
|
+
| 面 | 状态 | 说明 |
|
|
183
|
+
| --- | --- | --- |
|
|
184
|
+
| 权限 / 授权矩阵 | blocked | 授权矩阵不在配置面 |
|
|
185
|
+
| 嵌套子表(子表套子表) | blocked | 一级子表可用,嵌套不可 |
|
|
186
|
+
| OCR / 电子签章 / 发票识别 | unsupported | 不在平台配置覆盖内 |
|
|
187
|
+
| 应用发布 / 环境上线 / 生产发布 | unsupported | CLI 只做配置,不做环境发布 |
|
|
188
|
+
| 在线后端编码 / EXECUTE_CODE / ONLINE_DEVELOP | unsupported | 用二开扩展包,不用在线 JS 伪造 |
|
|
189
|
+
|
|
190
|
+
> `blocked` / `unsupported` 是**原生配置**的判定,通常把行为路由到另一个代码所有者(`配置 + 后端扩展`),**不等于**需求不可交付。把 blocked face 编译成「做不了、留人工」是失败模式。
|
|
191
|
+
|
|
192
|
+
## 相关 topic
|
|
193
|
+
|
|
194
|
+
- 需求分析(定面/归类/选路):`omc-requirement-analysis`;线索词表:`omc-requirement-vocabulary`
|
|
195
|
+
- 用哪个工具最省:`omc-tool-selection`;写前人审门:`omc-config-draft-review`
|
|
196
|
+
- 被拒/状态异常:`omc-refusals`;新面取证:`omc-capability-scouting`
|
|
197
|
+
- 每能力的配置怎么配:`omc-business-configuration` 的对应节;写入风险:`omc-write-hazards`
|
|
@@ -1,55 +1,55 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: omc-capability-scouting
|
|
3
|
-
description: Scout a NEW CloudPivot config face honestly. Use when a capability isn't in the coverage manifest yet and you must prove it before promising it.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Capability Scouting (扒配置方法论)
|
|
7
|
-
|
|
8
|
-
How to scout a new CloudPivot configuration face honestly: the output feeds the
|
|
9
|
-
coverage manifest, and a manifest promise is always evidence-backed.
|
|
10
|
-
|
|
11
|
-
## Phase 0 — 定面
|
|
12
|
-
|
|
13
|
-
Name the face first. The same Chinese/English word often names two engines
|
|
14
|
-
(businessrule B-plane vs field-level dataRuleType; app-tree node id vs schema
|
|
15
|
-
record id). The wrong face wastes everything after it.
|
|
16
|
-
|
|
17
|
-
## Phase 1 — 静态三角定位
|
|
18
|
-
|
|
19
|
-
1. **Enum scan** — the platform is enum-driven. The `*Type.java` enums are the
|
|
20
|
-
complete universe of a concept.
|
|
21
|
-
2. **Endpoint chain** — Controller → FacadeImpl → Service along the lifecycle
|
|
22
|
-
(save/publish/delete/get_*). The gate methods ("when is this refused") are
|
|
23
|
-
half the contract.
|
|
24
|
-
3. **DTO archaeology** — decompiled model fields and defaults are the request
|
|
25
|
-
shape; chase nested options JSON to leaf types.
|
|
26
|
-
4. **Designer cross-check** — search the admin dist chunks by control code,
|
|
27
|
-
label, or write-mapping. The UI's write-mapping is the true wire contract.
|
|
28
|
-
5. **DB persistence face** — the `h_*` tables are final truth; the API face
|
|
29
|
-
leaks. A dbsweep once caught orphans invisible to every API.
|
|
30
|
-
|
|
31
|
-
## Phase 2 — 合同成形
|
|
32
|
-
|
|
33
|
-
6. Grade every fact: `observed` (from source lines) vs `inferred` (from chunk
|
|
34
|
-
reverse-engineering). Keep the confidence tiers apart.
|
|
35
|
-
7. Split open points into statically-closeable vs live-only.
|
|
36
|
-
8. Design negative controls — a contract has discriminative power only when a
|
|
37
|
-
forged payload is refused for the right reason.
|
|
38
|
-
|
|
39
|
-
## Phase 3 — live 收口
|
|
40
|
-
|
|
41
|
-
9. Treat the static contract as a hypothesis and interrogate it live, item by
|
|
42
|
-
item — half the wire facts in this project came from live corrections
|
|
43
|
-
(gateway double-prefix, int enums, Void envelope, tree-node ids,
|
|
44
|
-
form/load as authoritative readback).
|
|
45
|
-
10. Prefer a real traffic sample; capture designer requests when possible.
|
|
46
|
-
11. Guard against false PASS: read the full green chain; "called" ≠ "passed".
|
|
47
|
-
12. Before blaming the platform, retry with a different authoritative id
|
|
48
|
-
source and compare against designer traffic.
|
|
49
|
-
|
|
50
|
-
## Output
|
|
51
|
-
|
|
52
|
-
Per open point: evidence (file+lines / chunk anchor) → conclusion
|
|
53
|
-
(observed/inferred) → verdict; close with a go/no-go and the residual
|
|
54
|
-
human-decision list. A capability enters the coverage manifest only with live
|
|
55
|
-
evidence; everything else stays `blocked` / `static-only` / `unsupported`.
|
|
1
|
+
---
|
|
2
|
+
name: omc-capability-scouting
|
|
3
|
+
description: Scout a NEW CloudPivot config face honestly. Use when a capability isn't in the coverage manifest yet and you must prove it before promising it.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Capability Scouting (扒配置方法论)
|
|
7
|
+
|
|
8
|
+
How to scout a new CloudPivot configuration face honestly: the output feeds the
|
|
9
|
+
coverage manifest, and a manifest promise is always evidence-backed.
|
|
10
|
+
|
|
11
|
+
## Phase 0 — 定面
|
|
12
|
+
|
|
13
|
+
Name the face first. The same Chinese/English word often names two engines
|
|
14
|
+
(businessrule B-plane vs field-level dataRuleType; app-tree node id vs schema
|
|
15
|
+
record id). The wrong face wastes everything after it.
|
|
16
|
+
|
|
17
|
+
## Phase 1 — 静态三角定位
|
|
18
|
+
|
|
19
|
+
1. **Enum scan** — the platform is enum-driven. The `*Type.java` enums are the
|
|
20
|
+
complete universe of a concept.
|
|
21
|
+
2. **Endpoint chain** — Controller → FacadeImpl → Service along the lifecycle
|
|
22
|
+
(save/publish/delete/get_*). The gate methods ("when is this refused") are
|
|
23
|
+
half the contract.
|
|
24
|
+
3. **DTO archaeology** — decompiled model fields and defaults are the request
|
|
25
|
+
shape; chase nested options JSON to leaf types.
|
|
26
|
+
4. **Designer cross-check** — search the admin dist chunks by control code,
|
|
27
|
+
label, or write-mapping. The UI's write-mapping is the true wire contract.
|
|
28
|
+
5. **DB persistence face** — the `h_*` tables are final truth; the API face
|
|
29
|
+
leaks. A dbsweep once caught orphans invisible to every API.
|
|
30
|
+
|
|
31
|
+
## Phase 2 — 合同成形
|
|
32
|
+
|
|
33
|
+
6. Grade every fact: `observed` (from source lines) vs `inferred` (from chunk
|
|
34
|
+
reverse-engineering). Keep the confidence tiers apart.
|
|
35
|
+
7. Split open points into statically-closeable vs live-only.
|
|
36
|
+
8. Design negative controls — a contract has discriminative power only when a
|
|
37
|
+
forged payload is refused for the right reason.
|
|
38
|
+
|
|
39
|
+
## Phase 3 — live 收口
|
|
40
|
+
|
|
41
|
+
9. Treat the static contract as a hypothesis and interrogate it live, item by
|
|
42
|
+
item — half the wire facts in this project came from live corrections
|
|
43
|
+
(gateway double-prefix, int enums, Void envelope, tree-node ids,
|
|
44
|
+
form/load as authoritative readback).
|
|
45
|
+
10. Prefer a real traffic sample; capture designer requests when possible.
|
|
46
|
+
11. Guard against false PASS: read the full green chain; "called" ≠ "passed".
|
|
47
|
+
12. Before blaming the platform, retry with a different authoritative id
|
|
48
|
+
source and compare against designer traffic.
|
|
49
|
+
|
|
50
|
+
## Output
|
|
51
|
+
|
|
52
|
+
Per open point: evidence (file+lines / chunk anchor) → conclusion
|
|
53
|
+
(observed/inferred) → verdict; close with a go/no-go and the residual
|
|
54
|
+
human-decision list. A capability enters the coverage manifest only with live
|
|
55
|
+
evidence; everything else stays `blocked` / `static-only` / `unsupported`.
|