ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

Maximo数据库配置与域管理实战入门

Maximo数据库配置与域管理实战入门

简介:本资源是一份面向IT运维工程师、资产管理系统实施人员及Maximo初学者的系统性入门培训文档,聚焦Maximo平台核心配置能力培养,解决企业级资产与工单管理中数据库建模、对象定义与属性设置等关键实操问题。文档为单文件Word格式(.doc),共1个文件,大小5.96MB,内容结构清晰,覆盖数据库配置(含对象建模、主对象类型、持久性与层级分类)和属性配置(含类型长度、等同属性、虚拟字段、缺省值与自动编号等12类要点),每章配有练习与实操示例,如test表与testline行关系建模,便于边学边练。目前已有254人学习下载,读者可直接掌握Maximo底层数据结构设计逻辑、快速完成环境初始化配置,并为后续工作流开发与系统定制打下坚实基础。

1. Maximo 是什么:一个帮你管好“公司里所有东西”的数字管家

想象一下,你刚接手一家工厂的设备维护工作——几百台机器、几十个仓库、上千份工单、每天都有人报修、换零件、做保养……光靠Excel表格和纸质单子,三天就乱套。这时候,有人递给你一个叫 Maximo 的系统:点几下,就能查到某台泵上一次保养是什么时候、谁做的、用了哪批备件;新建一张工单,自动推给对应班组;设备快到期该检修了,系统提前一周发提醒;甚至还能算出:换这台老电机,三年能省多少电费。它不是个“软件”,而是一整套企业级资产生命周期管理的数字骨架——从设备买进来、用起来、修起来,到报废掉,全程可追踪、可配置、可自动化。你不需要写代码也能用,但如果你想让它真正贴合自己公司的流程(比如把“维修申请”改成“设施报障”,把审批环节加一道安全部门会签),就得懂它怎么“搭积木”。这份《Maximo基本培训.doc》,就是带你从零开始,亲手搭第一块积木:不是教你怎么点菜单,而是让你明白——为什么改一个字段名,要先点“数据库配置”,再点“configdb”,最后才能在工单页面看到新名字?为什么“SITEID”字段不能随便删?为什么新建一个“备件领用”对象,必须设成“主对象”才能走审批流?它不讲大道理,只带你一步步摸清 Maximo 的底层逻辑:对象是砖,属性是砖上的刻字,关系是砖和砖怎么垒,而 configdb 就是最后那道“水泥浇筑”——没这一步,再漂亮的图纸也变不成真墙。适合谁?刚入职的系统实施助理、想转行做EAM(企业资产管理系统)顾问的IT新人、或是被领导突然安排“把咱们的设备台账搬进Maximo”的工程师——只要你愿意从“点开系统不手抖”开始,这篇就是你的第一把钥匙。

2. 先搞懂一个核心动作:数据库配置到底在配什么?

Maximo 不是黑匣子,它所有的功能——工单、资产、采购、报表——都长在同一个“地基”上:数据库。但这个地基不是让你直接去SQL里建表,而是通过一个叫“数据库配置”(Database Configuration)的图形化界面来搭。它像乐高说明书:告诉你哪块砖(对象)该放哪儿、砖上刻什么字(属性)、两块砖怎么咬合(关系)。新手常以为“配数据库=连上服务器”,其实完全相反——Maximo 已经连好了,你配的是“怎么让系统理解你要管的东西”。比如,公司新买了5台智能电表,需要记录每台的IP地址、安装位置、校准日期。你不会去数据库里手动加一张smart_meter表,而是打开“数据库配置”,新建一个叫SMARTMETER的对象,给它加三个属性:IPADDR(类型ALN,长度15)、INSTALLLOC(类型ALN,长度50)、CALIBDATE(类型DATE)。这时,数据库里还没有这张表,页面上只显示“待添加”。直到你点下那个关键按钮——configdb,系统才真正去数据库里建表、加字段、设索引。这一步,就是把“设计图”变成“实体建筑”的临界点。跳过它,你在界面上看到的新字段永远是灰色的、不可编辑的;点错了,可能让整个工单模块打不开。所以,这一章我们不讲理论,只盯住三件事:第一,新建一个最简单的对象,跑通从“画图”到“盖楼”的全流程;第二,搞清每个选项背后的真实含义——比如“持久性”关掉后,这个对象能用来干啥?第三,避开那些让新人花半天找不着北的典型卡点。现在,我们动手。

2.1 新建第一个对象:从“test”开始,不碰业务数据

我们不碰真实的“资产”或“工单”,先建一个纯测试对象test,确保环境干净、失败无代价。打开 Maximo → 导航栏点击System Configuration → Platform Configuration → Database Configuration。界面左侧是树状菜单:列表、对象、属性、索引、关系。点击“对象”节点,右侧出现对象列表。点右上角New按钮。弹出窗口要求填:

  • Object Name:test(必须全大写,且不能含空格或特殊字符)
  • Description:Test Object for Training(描述可中文,用于后台识别)
  • Persistent: 勾选(这是默认,也是新手唯一该选的)
  • Level: 选SYSTEM(暂不涉及组织架构)

提示:Object Name是系统内部唯一标识,一旦保存无法修改。test是安全选择,因为Maximo自带对象里没有重名项。

点OK,列表里立刻多了一行,状态显示"Pending Add"(待添加)。注意:此时刷新数据库连接,或用SQL工具查sysobjects,绝对找不到test这张表——它只活在Maximo的“设计层”。

2.2 给对象加字段:属性不是随便填的,类型决定生死

对象建好了,得让它能存数据。点中刚建的test行,右侧切换到“属性”标签页,点New。填:

  • Attribute Name:TESTNAME(字段名,大写,下划线分隔)
  • Description:测试名称
  • Type:ALN(Alphanumeric,支持中英文数字)
  • Length:50(最多存50个字符)

再建第二个字段:

  • Attribute Name:CREATEDATE
  • Description:创建日期
  • Type:DATE(注意不是DATETIME!DATE只有年月日,无时分秒)
  • Length: 灰色不可填(DATE类型长度固定)

点OK保存。回到对象列表,test行的状态还是"Pending Add"。关键来了:现在你去任何应用界面(比如“应用程序设计器”)试图新建一个用test做数据源的页面,会发现TESTNAME字段根本不出现在可用字段列表里——因为设计层还没落地。

2.3 执行 configdb:让设计图变成真表的“浇筑仪式”

这才是本章最硬核的操作。回到“数据库配置”主界面,顶部菜单栏找到Select Action → Config Database(不是按钮,是下拉菜单里的选项)。点它,弹出确认框:“Configuring the database will update the physical database structure. Continue?”。点Yes。进度条走完,状态变成"Configured"。立刻打开SQL客户端(如SQL Server Management Studio),执行:

SELECT * FROM sysobjects WHERE name = 'test'

结果返回一行:test表已存在。再查字段:

SELECT COLUMN_NAME, DATA_TYPE, CHARACTER_MAXIMUM_LENGTH FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'test'

看到TESTNAME(类型varchar,长度50)和CREATEDATE(类型date)赫然在列。此时,test对象才真正“活”了——你可以用它建应用、写报表、做集成。但记住:configdb是全局操作,会影响整个系统。生产环境严禁随意执行,必须走变更流程。练习环境里,它是你验证理解的唯一标尺。

2.4 主对象、级别、类:三个选项背后的业务逻辑

刚才建test时,你勾了“Persistent”,选了“SYSTEM”级别,用了默认类。现在反过来看它们为啥重要:

  • 主对象(Primary Object):勾选后,该对象能作为工作流(Workflow)的起点。比如WORKORDER是主对象,所以能发起审批流;而WORKLOG(工单日志)不是主对象,只能依附于工单存在。如果你建一个SPAREPARTREQUEST(备件申领),必须勾主对象,否则无法走独立审批。
  • 级别(Level):决定数据隔离范围。SYSTEM级对象全公司可见;ORG级需绑定ORGID字段,数据按组织划分(如“华东分公司”只能看自己的资产);SITE级更细,需同时有ORGID和SITEID,实现“上海浦东仓库”级隔离。建错级别,后期改起来要重建所有数据。
  • 类(Class):默认psdi.mbo.custapp.CustomMboSet是通用容器,但当你需要定制逻辑(如“创建新设备时,自动同步到ERP系统”),就得写Java类继承它。新手阶段,不碰类,但必须知道:它控制对象的“行为”,而不仅是“长相”。

2.5 避坑:新手执行 configdb 前必查的5个致命检查点

新手第一次点configdb,90%的翻车都源于这五个细节。我带过的A同学,曾因第3条导致全库锁死2小时——不是危言耸听,是血泪经验。

注意:以下检查必须在点configdb前完成,且逐条确认。

现象:点configdb后进度条卡住,10分钟不动,数据库CPU飙升

原因:对象名或字段名含非法字符(如中文、空格、短横线-),或与系统保留字冲突(如ORDER、USER)。Maximo解析时陷入死循环。
解决:回到“对象”列表,检查所有待添加对象的Object Name;进入“属性”页,检查每个Attribute Name。只允许大写字母、数字、下划线,且必须以字母开头。test_01合法,test-01非法。

现象:configdb成功,但新表在SQL里查不到,或字段类型不对(如DATE变成datetime)

原因:字段Type选错。Maximo中DATE和DATETIME是两种独立类型,前者存日期(2023-01-01),后者存时间戳(2023-01-01 14:30:00)。若选DATETIME却只填日期,系统会补0,但查询时WHERE datefield = '2023-01-01'永远不匹配。
解决:严格对照需求选型。记录“什么时候发生”用DATETIME;只关心“哪天”用DATE。建完字段后,在“属性”页点中该行,看右下角Type值是否与预期一致。

现象:configdb后,原有应用(如“资产管理”)打不开,报错MboSet not found

原因:误删或修改了系统核心对象的属性。例如,ASSET对象的ASSETNUM(资产编号)是主键,若你把它设为非必填,或改类型为ALN,整个资产模块将崩溃。
解决:新手原则——绝不碰任何已有对象。只新建test类对象。若必须改业务对象,先备份MAXIMO数据库,并在测试环境反复验证。

现象:configdb成功,但新字段在应用界面不显示,或显示为???

原因:字段未设置“搜索类型”(Search Type)。Maximo要求:凡要在查询、筛选、下拉框中出现的字段,必须在属性页勾选Search Type(如WILDCARD支持模糊搜,“EXACT”精确匹配)。没勾,字段虽存在,但前端“视而不见”。
解决:建完每个字段,立即切到该字段行,在“Search Type”列点下拉框,选WILDCARD(最常用)。别偷懒跳过这步。

现象:configdb后,新对象能建记录,但保存时报错Failed to save record,日志显示null pointer exception

原因:新建对象未添加必需字段。Maximo强制所有对象必须有ID字段(如test对象自动生成TESTID)和DESCRIPTION。若你删了DESCRIPTION,或建字段时拼错名(如DESCRITION),保存时因找不到必填字段而崩。
解决:新建对象后,先不加自定义字段,点configdb,再进应用界面试建一条记录。成功后再逐步加字段。每次加完一个,都重复“建记录→保存→验证”闭环。

3. 为什么必须学“域”:让下拉框不再靠猜,让数据不再满天飞

你有没有遇到过这种场景:在工单页面选“故障类型”,下拉框里飘着“机械故障”、“电气故障”、“软件故障”、“其他问题”、“待确认”……而隔壁部门同事选的却是“电机坏”、“PLC异常”、“HMI黑屏”、“网络不通”、“说不清”。同一张工单,五个人填出八种说法,月底统计“电气故障率”时,报表里全是“其他问题”。这就是没管好“域”(Domain)的典型症状。在Maximo里,“域”不是技术概念,而是企业数据标准的落地工具——它把“故障类型”这个抽象词,变成一份所有人必须遵守的、带编号的、可审计的清单。你建一个叫FAILURETYPE的域,里面只允许填5个值:MECH(机械)、ELEC(电气)、SOFT(软件)、NET(网络)、OTHER(其他)。前端下拉框从此只有这5个选项,后端数据库只存ELEC这样的编码,报表一跑,精准到小数点后两位。更重要的是,域可以复用:FAILURETYPE既能用在工单,也能用在资产台账、采购申请、甚至自定义的test对象里。改一处,全系统生效。所以,学域不是学配置技巧,而是学怎么用最小成本,把混乱的业务语言,翻译成系统能懂、人能守、老板能看的统一口径。这一章,我们就用10分钟,亲手把“故障类型”这个高频字段,从杂牌军变成正规军。

3.1 添加新域:三步定乾坤,名字、类型、值集

打开 Maximo →System Configuration → Platform Configuration → Domains。点右上角New。填:

  • Domain Identifier:FAILURETYPE(必须大写,无空格,全系统唯一)
  • Description:故障类型标准域
  • Domain Type:ALN(因为值是文本编码,如ELEC)
  • Max Length:10(够存ELECTRICAL绰绰有余)

点OK,域建好了,但此时它还是空的——就像一本空白的词典,只写了书名。下一步,填词。

3.2 编辑域值:不是随便输,是“编码+描述”双保险

在域列表中,点中FAILURETYPE行,右侧切换到“Values”标签页,点New。填:

  • Value:ELEC(这是存进数据库的编码,必须简短、无歧义)
  • Description:电气故障(这是用户看到的中文名,可长可短)
  • Internal:否(内部值一般用于系统逻辑,新手不勾)

再建四条:

  • MECH/机械故障
  • SOFT/软件故障
  • NET/网络故障
  • OTHER/其他故障

点OK保存。此时,FAILURETYPE域已包含5个标准值。注意:Value列是数据库真实存储内容,Description只是显示用。如果未来要对接ERP,只需把ELEC映射到对方系统的ELECTRICAL,不用改任何业务数据。

3.3 把域绑到字段:让下拉框从“自由发挥”变成“照单点菜”

现在,FAILURETYPE域有了,但还没和任何字段挂钩。回到第一章建的test对象:打开Database Configuration→ 找到test对象 → 切到“属性”页 → 点中任意一个字段(比如TESTNAME)→ 在右侧面板找到Domain字段 → 点下拉框,选FAILURETYPE→ 点OK。立刻生效!现在,去“应用程序设计器”里基于test建个简单页面,TESTNAME字段就会自动变成下拉框,选项就是那5个标准值。用户再也无法输入“电机坏了”或“PLC挂了”,只能选MECH或ELEC。数据质量,从这一刻开始受控。

3.4 域的高级玩法:等同域与动态域,让标准活起来

新手常以为域就是静态列表,其实它能玩出花:

  • 等同域(Synonym Domain):比如FAILURETYPE和REPAIRTYPE(维修类型)业务含义高度重合,你建一个FAILURETYPE,再建REPAIRTYPE时,选Domain Type → Synonym,然后在Synonym Domain里选FAILURETYPE。这样,两个域共享同一套值,改一处,两处同步。避免“修理工填ELEC,工程师填ELECTRICAL”的尴尬。
  • 动态域(Dynamic Domain):值不是写死的,而是从数据库实时查。比如“可选仓库”下拉框,应该只显示当前登录用户有权限的仓库。这时,你建域时选Domain Type → Table,然后指定数据源表(如WAREHOUSE)和字段(WAREHOUSECODE,DESCRIPTION),再加权限过滤条件。用户一打开页面,下拉框自动加载其可见仓库。这需要SQL基础,但原理简单:域本质是“值的查询语句”。

3.5 避坑:域配置中最容易踩的4个数据陷阱

域看着简单,但配错一个,全公司数据就埋雷。我见过某公司因第2条,导致三年历史工单无法按故障类型分析——修复成本是重录2万条数据。

现象:下拉框显示为空,或只显示<None>

原因:域值Value列为空,或Description为空。Maximo要求至少Value非空。若Value填了ELEC但Description留空,下拉框可能不显示文字。
解决:进“Values”页,检查每一行,确保Value和Description都不为空。批量编辑时,复制粘贴易漏空格,手动敲一遍最稳。

现象:用户选了ELEC,保存后数据库里存的是ELEC(末尾带空格)

原因:Value字段输入时,不小心按了空格键。Maximo不自动Trim,空格成为编码一部分。后续所有查询WHERE failuretype='ELEC'都失败。
解决:建值时,输入后用鼠标拖选Value框内文字,看是否有隐藏空格;或建完后,用SQL查SELECT value FROM maxdomainvalue WHERE domainid='FAILURETYPE',肉眼确认。

现象:改了域值描述(如把电气故障改成电气类故障),但旧数据报表里还是显示旧描述

原因:域描述只影响前端显示,不影响数据库存储。旧数据仍存ELEC,新描述生效后,报表会自动显示新文字。但若你删了ELEC值再重建,旧数据因找不到对应值,报表可能显示为空或报错。
解决:永远不要删除已使用的域值。要更新,只改Description。若真要废弃,新增ELEC_OBSOLETE,并加注释说明。

现象:绑定域的字段,在应用界面变成只读,无法选择

原因:字段属性里勾了Read Only,或该字段被其他逻辑(如MBO类)强制设为只读。域本身不控制读写权限。
解决:先检查字段的Read Only属性是否误勾;再确认该字段是否被“应用程序设计器”里的控件属性覆盖(如Text Box控件设了readonly=true)。域只提供值源,不干涉交互。

4. 第一个能用的应用:用应用程序设计器搭个“测试数据录入页”

现在,你已经会建对象(test)、加字段(TESTNAME,CREATEDATE)、配标准(FAILURETYPE域),但这些还在后台躺着。真正的价值,是让一线员工能点开就用。Maximo不让你写HTML,而是用“应用程序设计器”(Application Designer)——一个拖拽式界面构建器。它像装修App:你选好“户型”(数据源对象),挑“家具”(控件),摆好位置,再拧紧“螺丝”(属性绑定)。本章,我们就用15分钟,把test对象变成一个能增删改查的完整页面。不追求美观,只求跑通:从登录→点菜单→填表→保存→查列表,全程无报错。这是你从“配置员”迈向“实施顾问”的第一个里程碑。

4.1 新建应用程序:名字即入口,授权定生死

打开 Maximo →System Configuration → Platform Configuration → Application Designer。点New。填:

  • Application:TESTAPP(应用ID,全大写,无空格,将作为URL路径)
  • Description:测试数据录入应用
  • Object:test(从下拉框选,必须是你configdb过的对象)
  • Main Table:test(主表,通常和Object同名)

点OK。此时,TESTAPP应用已创建,但还是空壳——就像毛坯房,没门没窗。下一步,装门(菜单)、开窗(界面)。

4.2 用控件搭建界面:从“标签页组”到“文本框”,每一块都精准落位

点中TESTAPP行,右侧切换到“Presentation”(显示)标签页。这是你的画布。点左上角Add→Tab Group(标签页组)。系统自动创建一个叫MAIN的标签页组。点中它,右侧面板出现属性:

  • Label:测试数据(用户看到的标签页名称)
  • Default Tab:TAB1(默认打开的子标签页)

点OK。再点MAIN行,点Add→Tab(标签页)。填:

  • Label:基本信息
  • ID:TAB1(必须和上面Default Tab一致)

点OK。现在,MAIN下有了TAB1。点中TAB1,点Add→Section(部分)。填:

  • Label:数据录入区
  • Columns:1(单列布局,最简洁)

点OK。最后,点中这个Section,点Add→Text Box(文本框)。填:

  • Attribute:TESTNAME(从下拉框选,绑定到test对象的字段)
  • Label:测试名称
  • Required:是(必填项,加星号)

再建一个:

  • Attribute:CREATEDATE
  • Label:创建日期
  • Required:否

点OK。界面搭完了!但此时还不能用——缺最后一环:菜单。

4.3 发布应用:三步上线,让应用出现在导航栏

回到“Application Designer”主界面,点中TESTAPP行,顶部菜单Select Action → Publish Application。弹出框选Yes。发布成功后,点Select Action → Grant Application Access。在弹出窗口:

  • Group: 选MAXADMIN(管理员组,确保你能看到)
  • Application:TESTAPP
  • Access: 勾View,Insert,Update,Delete,Execute(全选,测试用)

点OK。现在,登出Maximo,重新登录。在顶部导航栏,找到Go To → Applications,下拉菜单里赫然出现TESTAPP: 测试数据录入应用。点它,页面打开——一个带“测试名称”、“创建日期”输入框的干净界面。填TESTNAME=入门第一课,CREATEDATE=2023-01-01,点右上角Save。提示“Record saved successfully”。完美!

4.4 控件深度绑定:让下拉框、附件、按钮各司其职

刚才只用了文本框,但真实应用需要更多交互。回到TESTAPP的“Presentation”页,点中TAB1下的Section,点Add→Check Box(复选框)。填:

  • Attribute:ISACTIVE(假设你给test对象加了这个YORN类型字段)
  • Label:是否启用

再点Add→Attachments(附件)。填:

  • Label:相关文件
  • Max Files:5(最多传5个)

最后,点Add→Pushbutton(按钮)。填:

  • Label:生成报告
  • Event:onclick(点击事件)
  • Action:RUNREPORT(调用报表动作)

这些控件,只要绑定正确属性,就自动获得数据源、校验、权限控制。比如Check Box绑定ISACTIVE(YORN类型),前端就是勾选框,存库就是1或0;Attachments绑定后,用户点“添加”就能传文件,文件自动关联到当前test记录。

4.5 避坑:应用程序设计器里最常卡住的6个“看不见的坑”

新手搭完界面,点菜单却找不到应用,或点了报错,90%栽在这几个隐形设置上。

现象:发布后,导航栏找不到TESTAPP菜单

原因:应用未授权给当前用户组。发布只是让应用“存在”,授权才是“可见”。即使你是admin,也要显式授权。
解决:务必执行Grant Application Access步骤。检查Group是否选对(MAXADMIN是默认管理员组),Application是否选TESTAPP,Access是否勾全。

现象:点开应用,页面空白,或报错Error loading application

原因:ApplicationID(TESTAPP)与Object(test)不匹配,或对象未configdb。设计器只校验ID存在,不校验对象是否已落地。
解决:回到Database Configuration,确认test对象状态是"Configured",不是"Pending Add"。再检查TESTAPP的Object字段是否确实选中test。

现象:文本框能输,但点保存报错Field TESTNAME is required,尽管已填

原因:控件属性里Required设为是,但字段本身在对象定义中未设Required。Maximo双重校验:前端控件+后端对象。若对象层未设必填,保存时后端拒绝。
解决:回Database Configuration→test对象 → “属性”页 → 点中TESTNAME→ 右侧面板勾选Required→ 再configdb一次。

现象:下拉框显示域值,但选完保存,数据库里存的是空值

原因:域绑定到了错误字段。比如TESTNAME是ALN类型,你却绑了FAILURETYPE域(值是ELEC),类型不匹配,系统静默失败。
解决:检查字段类型与域类型是否一致。FAILURETYPE域值是文本,只能绑到ALN/UPPER类字段;YORN字段只能绑YORN域。

现象:附件上传后,列表里看不到,或下载报错File not found

原因:Maximo附件依赖文件服务器配置。若测试环境未配置maximo.ear的web.xml中fileserver参数,或磁盘空间不足,附件上传会失败。
解决:新手跳过附件,先用文本框验证流程。若必须用,联系系统管理员确认mxe.filestore.dir路径可写,且磁盘剩余>1GB。

现象:按钮点了没反应,或报错Action RUNREPORT not found

原因:Action名写错,或该动作未在系统中注册。RUNREPORT是内置动作,但若拼错(如RUN_REPORT),系统找不到。
解决:用下拉框选Action,不要手输。内置动作包括SAVE(保存)、CANCEL(取消)、DELETE(删除)、RUNREPORT(运行报表)等,下拉列表里都有。

5. 权限:不是“给所有人看”,而是“只给该看的人看”

你搭好了TESTAPP,填进了10条测试数据,一切完美。但第二天,领导问:“销售部的小王,能不能看到这些数据?”你一愣——他当然能,因为你是用MAXADMIN组授权的,而MAXADMIN是超级管理员组。这就像把公司保险柜钥匙发给了保洁阿姨。Maximo的权限体系,核心就一句话:数据在哪里,权限就管到哪里。它不是粗暴的“能/不能登录”,而是精细到“张三能看到北京仓库的设备,但看不到上海仓库的;李四能改工单状态,但不能删工单日志”。本章,我们不讲理论,只做一件事:把TESTAPP的数据,限制为“仅限测试组访问”,并让测试组成员只能看、不能删。这是你从“能做”迈向“敢交”的关键一步。

5.1 创建权限组:组是权限的集装箱,名字即责任

打开 Maximo →Security → Security Groups。点New。填:

  • Group:TESTGROUP(组ID,全大写)
  • Description:测试数据管理组
  • Status:Active(激活状态)

点OK。组建好了,但空空如也——就像买了集装箱,还没装货。下一步,装“应用权限”。

5.2 应用程序授权:给组开门,但门上要装锁

点中TESTGROUP行,右侧切换到“Applications”标签页,点Add。填:

  • Application:TESTAPP(从下拉框选)
  • Access: 勾View,Insert,Update(不勾Delete,禁止删除)
  • Restrict Access:是(关键!开启数据级限制)

点OK。此时,TESTGROUP对TESTAPP有查看、新增、修改权,但无删除权。但注意:Restrict Access勾了,只是开了锁孔,还没插钥匙——钥匙是“数据限制”。

5.3 数据限制:用“对象限制”锁住数据范围,让权限真正落地

点中TESTGROUP行,右侧切换到“Data Restrictions”标签页,点Add。填:

  • Object:test(限制哪个对象的数据)
  • Restriction Type:Object Restriction(对象级限制)
  • Where Clause:1=1(先写个永真式,表示不限制范围)

点OK。等等,1=1不是等于没限制?对,这是占位符。真正限制靠“属性限制”。点中刚建的这条Object Restriction,右侧切换到“Attribute Restrictions”子页,点Add。填:

  • Attribute:TESTNAME(限制哪个字段)
  • Operator:LIKE(模糊匹配)
  • Value:TEST%(只允许看TEST开头的记录)

点OK。现在,权限闭环了:TESTGROUP成员登录后,进TESTAPP,只能看到TESTNAME以TEST开头的记录(如TEST001,TEST_DATA),且不能删。他们填ABC123,保存会失败;查ABC123,列表为空。数据,真正被锁住了。

5.4 权限调试:三步定位“为什么他看不到”

权限配置后,常有用户反馈“我明明在组里,怎么看不到数据?”。别急,按顺序查:

  1. 查组成员:进Security → Users,找该用户,点开看“Security Groups”页,确认TESTGROUP已勾选。
  2. 查应用授权:进Security → Security Groups,点TESTGROUP,看“Applications”页,确认TESTAPP的Access勾了View,且Restrict Access是是。
  3. 查数据限制:在“Data Restrictions”页,确认Object Restriction的Where Clause和Attribute Restrictions逻辑无矛盾。比如Where Clause写STATUS='ACTIVE',但Attribute Restriction又写TESTNAME LIKE 'TEST%',两者是AND关系,必须同时满足。

提示:权限生效需登出重登。Maximo不实时刷新权限缓存。

5.5 避坑:权限配置中让新人一夜白头的4个逻辑陷阱

权限是Maximo最易错的模块,错一条,排查三天。我带过的B同学,曾因第1条,让全公司用户无法登录——不是夸张。

现象:给用户加了TESTGROUP,但他登录后,TESTAPP菜单彻底消失

原因:TESTGROUP的Application授权里,Access没勾View。View是菜单可见的前提,不勾,应用在导航栏隐身。
解决:进TESTGROUP的“Applications”页,确认TESTAPP行,View列是勾选状态。Insert/Update可不勾,但View必须勾。

现象:用户能进TESTAPP,但列表为空,且无报错

原因:Data Restrictions的Where Clause写错。比如test对象实际字段是TESTID,你写WHERE testid > 100,但testid是自增ID,新数据从1开始,>100永远不成立。
**

本文还有配套的精品资源,点击获取

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进