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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 4568|回复: 8

[安装|配置|入门|资料] MAXIMO开发总结

[复制链接]
发表于 2008/10/23 19:48:13 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。如果您注册时有任何问题请联系客服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);
}


}


 楼主| 发表于 2008/10/23 19:48:34 | 显示全部楼层
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;
 楼主| 发表于 2008/10/23 19:48:54 | 显示全部楼层
使用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);
}
}
 楼主| 发表于 2008/10/23 19:49:13 | 显示全部楼层
2)需要在WOService 中建立联系


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

}

二、还有另外一种,如AssignLabor、AssignLaborSet。
发表于 2009/6/16 15:17:19 | 显示全部楼层
好文章!
发表于 2009/9/19 16:35:40 | 显示全部楼层
受教了 ,不错
发表于 2010/1/21 11:20:50 | 显示全部楼层
好啊
发表于 2010/8/19 15:51:27 | 显示全部楼层
学学新东西,谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

GMT+8, 2025/11/30 04:54 , Processed in 0.017163 second(s), 14 queries , File On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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