Skip to content

Aras 开发 Cookbook

这组文章把零散的 Aras 项目代码整理成可以判断、可以迁移、也可以拒绝的开发手册。重点不是“复制一段能跑的代码”,而是先确认代码运行在哪一层、依赖哪个版本、是否真正经过权限与事务边界。

适用版本: 以 Aras Innovator R31 配置模型为当前基线,同时保留 11.0 SP9 / 12 / 14+ 的明确兼容注记。

执行层: 本页是目录与治理规则;具体代码分为客户端、服务端、AML 与 DBA 层。

主要依据: R31《Configuring Solutions Student Guide》、2025 Aras DevOps Student Guide Unit 01-18、11.0 SP9《基本开发详解》,以及目标 Release 的官方 Platform Specifications / Programmer's Guide。

阅读前先确认

用户提供的代码素材记录了真实项目经验,但它们不等于跨版本公共 API。尤其是 Classic Form、关系页签、搜索窗口和网格代码,常常依赖特定 Release 的窗口层级、DOM 或内部对象。

内容导航

主题解决的问题
表单、字段与关系页签字段联动、只读、页签显隐、刷新,以及 Classic client 的兼容边界
搜索对话框与关系网格固定搜索条件、打开对话框、更新关系行、复制当前查询
工作流、任务与签核人Controlled Item、动态签核人、条件流程、InBasket Task、系统事件
文件、下载与通知Vault、File 容器、上传下载、邮件、页面通知和剪贴板
权限、Method 与事务UI 限制和服务端授权的区别、受控提权、错误返回、xProperty 更新
诊断、版本与数据库.NET 版本核验、调试、递归查询、SQL 与 IIS 故障处理边界

四级标注

后续页面使用同一套标注。标注描述的是“能否作为文档主线”,不是对原作者的评价。

标注含义使用方式
Stable公开的数据模型、IOM/AML 模式或平台原则可以作为主线,但仍需在目标 Release 验证
Classic client compatibilityClassic Form 或旧客户端的兼容写法必须注明适用 Release、事件和窗口上下文
Private API未文档化的 DOM、frame、grid 或 CCO 内部接口隔离在适配器中,并为每次升级做回归测试
Reject会绕过权限/事务、包含明显错误,或可能破坏数据只解释风险,不提供可直接执行的破坏性原稿

判断顺序

先找配置能力,再找公开 IOM/AML,最后才考虑客户端兼容层。只要逻辑涉及授权、完整性或审计,就必须在服务端再次验证。

资料版本线索

  • 《基本开发详解》封面为 Aras Innovator 11.0 SP9,PDF 生成于 2019 年,部分课件画面来自更早时期。AML、IOM、Item、Relationship 和事件模型仍有参考价值;Internet Explorer、COM、旧 Dialog、relTabbar、frame 和 grid applet 代码只作为历史兼容资料。
  • 原厂《Configuring Solutions Student Guide》PDF 元数据标明 Innovator R31,生成于 2024 年 12 月。它是 ItemType、Property、Responsive Form、Security、Workflow、Vault、CUI 与 Packaging 的主要配置依据,不是客户端 JavaScript API 参考。
  • 原厂 Aras DevOps Unit 01-18 生成于 2025 年初,示例同时出现不同 baseline 与 Method Template 版本。它们适合说明 LDE/SDE、Git、Package、PR、测试和发布流程,但具体命令仍须服从项目仓库的 baseline。
  • 平台运行时不能靠“Aras 年份 = 某个 .NET 版本”推算。应查目标 Release 的 Platform Specifications,并分别检查 Innovator Server、Client、OAuth Server 等组件。

安全基线

  1. UI 隐藏、禁用或只读只改善体验,不构成权限控制。
  2. 业务写入使用 IOM/AML,让权限、事件、版本、历史和事务继续生效。
  3. 不直接修改 innovator 架构表,不在 Method 中手动回滚框架事务。
  4. 不把用户值拼进 AML、SQL、XPath 或 HTML;优先使用 IOM 属性方法和参数化接口。
  5. 权限提升必须最小化:限定 Identity、限定代码块、保证释放,并留下审计理由。
  6. document.write、未转义 HTML、内部数据库列表页和真实环境地址不得进入公开文档。
  7. 所有 Private API 必须由版本适配器包住,页面代码不能到处访问 parent[n] 或内部 grid 对象。

Source mapping

下表说明 50 份原始素材被吸收到哪里,以及最终如何处置。表内不保留素材中的真实 GUID、内网地址或业务对象名。

原文件名落位处置
页签栏位Value实时写入.js表单、字段与关系页签Private API:保留“UI 与客户端 DOM 同步”概念,重写接口边界
页签右键新增.js搜索对话框与关系网格Private API:去除硬编码和立即落库造成的孤儿风险
隐藏页签.js表单、字段与关系页签Classic client compatibility:按 Release 提供兼容层
右键新增数据到页签.js搜索对话框与关系网格Private API:修正未定义行、固定 frame 和错误上下文
原生弹窗.js文件、下载与通知Classic client compatibility:整理为统一通知入口
增加删除签审人员.cs工作流、任务与签核人重写为幂等、限定 Activity 的 IOM 操作;拒绝批量误删
自动下载.js文件、下载与通知Reject:移除非 Vault 静态文件示例
阻止数据回滚.cs权限、Method 与事务Reject:禁止手动破坏框架事务
组分复制到粘贴板.js文件、下载与通知查询与复制拆开;改用 Clipboard API 并处理失败
Get My Controlled Item(从当前签审页面找到签审表单调用方式var formItem = this.apply(Get My Controlled Item);).txt工作流、任务与签核人Classic client compatibility:优先调用目标版本内置 Method,不复制旧实现
ShowDisplay(显示和隐藏字段).js表单、字段与关系页签Classic Form 示例;补加载检查并声明非权限控制
SQL更新刷新.cs权限、Method 与事务Reject:直接 SQL 更新改为 IOM edit
SQL解锁.sql诊断、版本与数据库Reject 原稿;只保留 DBA 分阶段处置原则
表单字段页签只读.js表单、字段与关系页签Reject 原实现;移除 eval、无限轮询和吞错
表头字段Value实时写入.js表单、字段与关系页签Classic client compatibility:补事件上下文与版本说明
查看Aras对应.Net版本.md诊断、版本与数据库推翻固定对应表,改为逐组件核验
打开创建的窗体.js搜索对话框与关系网格Classic client compatibility:查询 Form、错误与 Promise 分层处理
打开对象搜索页面代码.js搜索对话框与关系网格两套版本 API 拆开,统一由 adapter 调用
代码发邮件.cs文件、下载与通知Reject 原稿;优先 Email Message 配置,代码仅做必要补充
代码模板-12版.js权限、Method 与事务修正为 C# 历史模板;默认移除全局提权
代码模板-14版.cs权限、Method 与事务保留作用域释放思想,不默认提升到高权限 Identity
代码模板-前端.js表单、字段与关系页签上下文显式传入,拒绝用 frame 索引猜当前 Item
到VisualStudio调试代码.cs诊断、版本与数据库仅 LDE;生产环境禁止启动 JIT 调试器
登录成功失败退出日志.cs工作流、任务与签核人拆成三个 System Event handler,增加隐私与保留策略
递归查询.xml诊断、版本与数据库Stable 概念:拆分查询、限制深度和返回字段
递归重下往上查询.sql诊断、版本与数据库仅只读 DBA/报表诊断;应用主线改用受权查询
调试浏览器不显示代码加这句.js诊断、版本与数据库保留 sourceURL 技巧,名称唯一且不进入生产包
发起不同工作流程.cs工作流、任务与签核人Reject 原稿;修正重复判断并禁止直改 Workflow 表
非管理人员上传文件报错解法.sql文件、下载与通知Reject:禁止固定 ID 直插系统 File Container
附加数据库执行语句.sql诊断、版本与数据库仅恢复场景,由 DBA 按 SQL Server 版本重建映射
根据条件切换页签显示.js表单、字段与关系页签整理为有超时的 Classic adapter
获取Aras有几个数据库代码.txt诊断、版本与数据库Reject:不公开数据库枚举端点与环境地址
获取XML里的值.cs诊断、版本与数据库重写为有节点、属性和索引检查的 XML 解析
获取我的任务.cs工作流、任务与签核人去除权限提升,修正 24 小时时间格式与时区假设
解决SQL报警告.cs诊断、版本与数据库参数化只读诊断;不把它包装成常规业务写入方式
解决TOC不显示icon问题.md诊断、版本与数据库Reject 原方案;禁止覆盖 web.config 和放大到极端请求上限
禁用页签.js表单、字段与关系页签合并进页签 adapter;修正方法大小写与布尔参数
快速打开指定对象.txt搜索对话框与关系网格环境地址、类型和 ID 参数化;注明登录与版本前提
拿取当前搜索条件.js搜索对话框与关系网格Reject 原稿;禁止私有查询对象直传和 document.write
前端上传文件代码.js文件、下载与通知选择、上传、关联、失败清理四步重写
权限获取.js权限、Method 与事务只用于 UI 提示;服务端继续强制授权
刷新代码.js表单、字段与关系页签Private API:拒绝 parent[n],集中到版本 adapter
搜索栏位设只读.js搜索对话框与关系网格保留固定过滤对象模式,补齐上下文和空值校验
限制窗体栏位是否可用代码.js表单、字段与关系页签保留 UI 禁用,明确不替代 Permission/Server Event
限制搜索内容.js搜索对话框与关系网格Reject 拼接 where/idlist;改为服务端 IOM 查询
消息红色背景通知.js文件、下载与通知统一通知和 Clipboard API,移除旧复制命令依赖
修改XProperty值.cs权限、Method 与事务IOM 读写示例;修正变量、XML 和错误处理
修改添加至变更单变更类型.txt工作流、任务与签核人仅保留 OOTB Method 线索,禁止把内部 Method 当稳定 API
页签编辑权限卡控.js表单、字段与关系页签UI 层规则;服务端重复校验实际权限和状态
页签表格上色.js搜索对话框与关系网格Private API:不发布内部 grid 结构直改代码

延伸阅读

本站内容仅供学习与参考