壹佰网|ERP100 - 企业信息化知识门户

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 5084|回复: 27

[扩展开发|报表开发] MAXIMO开发总结(注:转贴,来源不明)

  [复制链接]
发表于 2007/6/28 18:40:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。如果您注册时有任何问题请联系客服QQ: 83569622  。

您需要 登录 才可以下载或查看,没有帐号?注册

x
1、MAXIMO源码常用包
MAXIMO源码有很多包,开发经常用到的是下面几个:
psdi.app            每个模块对应的商业逻辑,例如psdi.app.po 下面的类就为采购单对应的业务逻辑。
psdi.jsp.app      每个模块对应的页面流转代码,例如页面上的菜单及按钮。
psdi.jsptags     JSP标签
psdi.mbo          最核心的包
psdi.util            工具类
psdi.workflow    工作流对应的类
2、MAXIMO源码常见类
psdi.mbo.Mbo,psdi.mbo.MboRemote 与 psdi.mbo.MboSet,psdi.mbo.MboSetRemote
这几个个类是最常见的类,所有带业务逻辑的类都是继承Mbo和MboSet。例如WO和WOSET、PR和PRSET。
Mbo类是处理单条记录的类。MboSet类是包含多个Mbo的类,可以看成是Mbo的数组。
一般都是由Mbo调用MboSet,是用getThisMboSet()来得到。
有MboSet得到Mbo是用getMbo()或getMbo(i)得到。
例如:


int i=0;

for(MboRemote mboRemote=mboSetRemote.getMbo(i);mboRemote !=null;mboRemote=mboSetRemote.getMbo(i))

       .....

       i
++;

}




psdi.jsp.beans.MboSetBean 这个类是用于存放JSP上输入的数据的类,例如页面上的mbosetid=\"rec\"就是指的是这个类。
FldXXXX类,是操作字段的类,一般有下面四个方法
Init()     初始化工作
initValue() 初始化值时的工作。
validate() 数据校验,一般在光标离开此字段的输入框时校验。
action()   当validate执行完时,执行的动作
3.客户化修改
在实施MAXIMO经常需要根据客户要求做客户化修改操作,一般我都尽量不改变MAXIMO源码,而是在源码的基础上选择继承或者覆盖。
例如:我要修改工单的save方法,就必须做以下操作:
1)继承WOSet

public
class MyWOSet extends WOSet implements MyWOSetRemote......{
   
private
static Logger logger = Logger.getLogger(MyWOSet.class);
   
/** *//**
*//** *//**
     * 构造函数 一定要有的
     *
@param mboserverinterface MboServerInterface
     *
@throws MXException
     *
@throws RemoteException
     
*/
   
public MyWOSet(MboServerInterface mboserverinterface) throws MXException, RemoteException ......{
      
super(mboserverinterface);
   }


   
/** *//**
*//** *//**
    * 采用自己定义的类
    *
@param ms MboSet
    *
@return Mbo
    *
@throws MXException
    *
@throws RemoteException
   
*/
   
public Mbo getMboInstance(MboSet ms) throws MXException, RemoteException ......{
      
return
new MyWO(ms);
   }


}




[ 本帖最后由 W39 于 2007-6-28 18:43 编辑 ]
 楼主| 发表于 2007/6/28 18:44:16 | 显示全部楼层
2)继承WO
public
class MyWO extends WO implements WoRemote ......{
   
/** *//**
*//** *//**
     * 一定要有的东东
     *
     *
@param ms
     *            MboSet
     *
@throws MXException
     *
@throws RemoteException
     
*/
   
public MyWO(MboSet ms) throws MXException, RemoteException ......{
        
super(ms);
    }

   
public
void save() throws MXException, RemoteException ......{
                                          
super.save();
        customMethod();
    }

   
public
void customMethod() throws MXException, RemoteException ......{
                                          .......
    }

                     




3)修改数据库

        update maxtables2   set classname='com.app.workorder.MyWOSet'        where tbname='WORKORDER';
        update maxtablescfg set set classname
='com.app.workorder.MyWOSet'        where tbname='WORKORDER';
        commit;
 楼主| 发表于 2007/6/28 18:46:20 | 显示全部楼层
使用MAXIMO平台做开发,对很多东西都迷迷糊糊的,在这里一点一点总结,理清思路。
一、虚拟表
顾名思义就是不存在的表,它实际上只是被配置在MAXIMO的表信息中,但在物理中是不存在的,是虚拟的。
虚拟表,主要用来存储临时数据,因为maximo用的都是对象或者说是对象集,如果你想临时存储一些数据,那么你就要构造这个虚表。一般是在页面代码中调用。

1、最常见的虚拟表就是修改状态的表,例如WOChangeStatus、WOChangeStatusSet。
1)这种类的代码基本大同小异,
public
class WOChangeStatusSet extends ChangeStatusSet
   
implements NonPersistentMboSetRemote
...{

   
public WOChangeStatusSet(MboServerInterface mboserverinterface)
        
throws MXException, RemoteException
   
...{
        
super(mboserverinterface);
    }


   
protected Mbo getMboInstance(MboSet mboset)
        
throws MXException, RemoteException
   
...{
        
return
new WOChangeStatus(mboset);
    }


   
public String getName()
   
...{
        
return
"WOChangeStatus";
    }


   
protected MboSetRemote getMboIntoSet(MboRemote mboremote)
        
throws MXException, RemoteException
   
...{
        MboSetRemote mbosetremote
= getMboServer().getMboSet("WORKORDER", getUserInfo());
        SqlFormat sqlformat
=
new SqlFormat(mboremote, "wonum = :wonum");
        mbosetremote.setWhere(sqlformat.format());
        mbosetremote.setApp(getApp());
        
return mbosetremote;
    }

}


public
class WOChangeStatus extends NonPersistentMbo
   
implements NonPersistentMboRemote
...{

   
public WOChangeStatus(MboSet mboset)
        
throws MXException, RemoteException
   
...{
        
super(mboset);
    }


   
public
void add()
        
throws MXException, RemoteException
   
...{
        
super.add();
        java.util.Date date
= MXServer.getMXServer().getDate();
        setValue(
"AsOfDate", date, 11L);
        setValue(
"ChildStatus", getOwner().getBoolean("ChangeChildStatus"), 11L);
        setValue(
"SINGLEWO", 0, 11L);
    }

}

 楼主| 发表于 2007/6/28 18:46:35 | 显示全部楼层
2)需要在WOService 中建立联系


public
class WOService extends AppService    implements WOServiceRemote
...{
  。。。
   
public
void createRelationList(RelationList relationlist) ...{
      。。。
     relationlist.addRelation(
new RelationInfo("WOChangeStatus", "WORKORDER", "WOChangeStatus", ""));
  }

  。。。
  
}


二、还有另外一种,如AssignLabor、AssignLaborSet。
发表于 2007/6/28 18:49:48 | 显示全部楼层
哈哈,这是我写的,也被楼主搜出来了。
发表于 2007/6/29 10:15:47 | 显示全部楼层
哈哈 那楼上的更厉害~
发表于 2007/8/10 01:13:18 | 显示全部楼层

非常感谢非常感谢非常感谢

非常感谢非常感谢非常感谢
发表于 2007/8/10 16:25:14 | 显示全部楼层
FldXXXX类,是操作字段的类,一般有下面四个方法
Init()     初始化工作
initValue()是初始化工作吧
发表于 2007/8/10 16:36:10 | 显示全部楼层
虚拟表看不明白:(
楼主再解释的清楚一点好吗?
万分感谢
发表于 2007/8/23 14:31:15 | 显示全部楼层
这个帖子很不错啊,如果在MAXIMO客户化涉及到开发的时候,有一个基本的好的思路,解决问题就会很有效果,支持一下!
发表于 2007/12/19 15:38:30 | 显示全部楼层
dddddddddddddddddd
发表于 2008/1/30 00:50:05 | 显示全部楼层
不错不错的帖子;值得好好推荐学习呢。
发表于 2008/4/14 15:49:06 | 显示全部楼层

好东西

谢谢,好好好;十分感谢楼主

还有5#的那个同学
发表于 2008/6/3 14:47:03 | 显示全部楼层
这篇文章的的实战性很强啊,多谢多谢
发表于 2008/6/18 10:17:44 | 显示全部楼层
csdn上的[s:6] [s:6] [s:6]
发表于 2008/6/18 14:00:36 | 显示全部楼层
多谢转贴!!
发表于 2008/7/7 09:15:28 | 显示全部楼层
这个帖子发表出来真好,顶顶顶!!!!!!!!!!
发表于 2008/10/15 14:14:52 | 显示全部楼层
引用第4楼yf6456于2007-06-28 18:49发表的:
哈哈,这是我写的,也被楼主搜出来了。

原贴在这里:http://blog.csdn.net/YF6456/archive/2007/03/12/1526714.aspx

看样子yf6456就是作者呀。
发表于 2008/10/19 18:20:57 | 显示全部楼层
有点苛求了,代码部分好多链接信息啊,楼主转载的时候处理一下呗! [s:42]
发表于 2008/10/19 18:22:12 | 显示全部楼层
IBM有个chm叫userguide,里面有相关的扩展逻辑说明,包括方面很全,但是不是很详细
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|小黑屋|手机版|壹佰网 ERP100 ( 京ICP备19053597号-2 )

Copyright © 2005-2012 北京海之大网络技术有限责任公司 服务器托管由互联互通
手机:13911575376
网站技术点击发送消息给对方83569622   广告&合作 点击发送消息给对方27675401   点击发送消息给对方634043306   咨询及人才点击发送消息给对方138011526

GMT+8, 2025/11/29 12:56 , Processed in 0.046884 second(s), 14 queries , File On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表