10/13 我说:「你梳理的不是很清楚。就是 site.xml 这种的……在 Windows 虚拟机里,在一些固定的文件中添加一些内容,就能直接在 C8 系统上显示出来。」 第一版只看了 plmservice(Java 后端),漏了主线。依据:C8配置规则_7.8.1(gongsi-c8)、课件《5、前端开发xml》《6、js》、plmservice 源码。
| ① C8 配置(主线) | ② Java 后端 plmservice(支线) | |
|---|---|---|
| 在哪写 | Windows 虚拟机 C:\C8\WebAccess\Site\ |
IDEA,单独的 Spring Boot 工程 |
| 写什么 | Site.xml / Site.js / en.js / Site.css | Controller / Service / DTO |
| 语言 | XML + JavaScript(不是 Java) | Java |
| 什么时候用 | 页面加字段、加按钮、自动改值 | C8 跟 OA/钉钉/ERP 对接、导入导出 |
| 生效 | 保存 → Update Configuration → 刷新页面 | 启动服务(8088) |
| 文件 | 管什么 | 一句话 |
|---|---|---|
| Site.xml | 页面上有什么:字段(Heading)、按钮(Action)、视图(View) | 摆家具 |
| Site.js | 点了/改了之后做什么:监听字段、按钮逻辑 | 接电线 |
| en.js | 内部 Id 显示成什么字:C8_ReviewApproval → 审核通过 | 贴标签 |
| Site.css | 颜色外观 | 刷漆(少用) |
| 前提:字段本身要先在 Setup / Business Objects 里建好(能存什么),四件套只管显示和行为。 |
需求:款式上有「审核人」「审核状态」;选了审核人,状态自动变「审核中」;点「审核通过」按钮,状态变「已通过」。
Site.xml —— 页面上摆出两个字段
<NodeRef Type="Style">
<Headings>
<Heading Id="C8_Style_Reviewer">
<Relationship Type="User"/>
</Heading>
<Heading Id="C8_Style_ReviewStatus"/>
</Headings>
</NodeRef>
Site.js —— 选了审核人,状态自动变
api.watchAttribute("Style", "C8_Style_Reviewer", function (ac, cn, node, id) {
if (ac.newValue && ac.newValue !== "centric:") {
ac.m_writer
.changeNode(node.$URL)
.changeAttribute("C8_Style_ReviewStatus", "enum", "C8_Style_ReviewStatus:Reviewing");
ac.bRefreshNode = true;
}
return true;
});
Site.js —— 按钮点了做什么(写在最后的 return { ... } 里,名字跟 Action Id 对上)
C8_onActionReviewApproval: function (ac) {
ac.m_writer.changeNode(ac.m_urlNode)
.changeAttribute("C8_Style_ReviewStatus", "enum", "C8_Style_ReviewStatus:Approved");
ac.bRefreshNode = true;
return true;
}
en.js —— 按钮显示中文
"Action": { "C8_ReviewApproval": "\u5ba1\u6838\u901a\u8fc7" } // = 审核通过
然后:Ctrl+S 保存(Notepad++ 标题有 * = 没存)→ Update Configuration → 刷新页面验证。
| 学过的 | 在 Site.js 里长什么样 |
|---|---|
| 04 方法、参数、返回值 | function (ac, cn, node, id) { ... return true; } |
| if | if (ac.newValue && ...) 一模一样 |
| 03 不等于 | Java !equals → JS !== |
| 05 对象.属性 | node.$URL、ac.newValue |
| 13 HashMap 钥匙→值 | en.js 整个就是:"C8_ReviewApproval": "审核通过" |
| 12 接口=合同 | XML 里写了 Action Id,JS 的 return 里就必须有同名函数,对不上就不执行 |
| D 链式调用 | .changeNode(..).changeAttribute(..) —— plmservice 的 Java 里也是同一句 C8Write.changeNode(..).changeAttribute(..) |
| 用不上的:static、继承、ArrayList/TreeSet 细节、泛型(Java 才有)。 |
| # | 东西 | 属于 |
|---|---|---|
| 1 | XML 读写:标签、属性、嵌套、自闭合 <X/> |
新,简单 |
| 2 | C8 名词:Type(Style/Sample/ApparelBOM)、Attribute Id、Heading、Action、View、枚举完整写法 枚举名:Key |
C8 知识 |
| 3 | JS 最小集:function、if、对象 { "键": 值 }、逗号规则、把函数当参数传进去 |
新,Java 基础能搬 |
| 4 | C8 的 api:watchAttribute(监听)、m_writer.changeNode().changeAttribute()(改值)、hideRevisionAction(藏按钮)、setRelationshipAccess(权限) |
课件 6 |
| 5 | 生效流程 + 排错:保存 → Update → 刷新;显示内部 Id = en.js 没存 | 知识库已踩过 |
| 6 | Java 后端(plmservice) | 支线,等有对接需求再深入 |
C:\C8\WebAccess\Site\ → Update → 页面看到 → 落点:截图