关于为maximo应用程序增加操作类及操作方法的操作:
(1)首先进入应用程序设计器,打开相应的应用程序;
(2)在界面中打开"选择操作"的下拉菜单(位于界面的最上方);
(3)选择"切换显示所有控件",将隐藏的系统对象显示出来;
(4)点击"presentation"控件,然后点击"控制属性"按钮,(该按钮在界面的最上面),打开"演示属性"窗口;
(5)为App Bean类设置值:如ibmcust.webclient.beans.yum.OrderinforAppBean,该类需要继承AppBean,我这里选择的是继承StatefulAppBean;
(6)然后可以为该类增加insert,save,delete,等功能方法,需要override 父类里的这些相关方法;
(7)编写完成后,可以将该类放到maximo.ear中的maximouiweb.war目录下的WEB-INF/classes目录下或打成jar放到lib目录下(打成jar后需要重新启动服务器);
类例代码:
package ibmcust.webclient.beans.yum;
import java.rmi.RemoteException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import psdi.mbo.MboRemote;
import psdi.mbo.MboSetRemote;
import psdi.util.MXException;
import psdi.webclient.beans.common.StatefulAppBean;
import psdi.webclient.system.controller.Utility;
public class OrderinforAppBean extends StatefulAppBean{
private final String APPLYER = "APPLYER";
private final String ORDERSTATUSNAME = "ORDERSTATUSNAME";
private final String DEGREENAME = "DEGREENAME";
private final String CREATEDATE = "CREATEDATE";
private final String DEFAULTDEGREE = "普通";
private final String STATEDRAFT = "Draft";
private final String STATENEW = "New";
private final String STATEPEDDING = "Pending";
private final String STATECLOSE = "Closed";
private final String STATECANCEL = "Cancel";
private final String MAXORDERCODE = "MAXORDERCODE";
private final String SEQUENCENUMBER = "SEQUENCENUMBER";
public int INSERT() throws MXException, RemoteException{
int ret = super.INSERT();
String username = this.getMXSession().getUserName();
this.setValue(APPLYER, username);
this.setValue(ORDERSTATUSNAME,STATEDRAFT);
this.setValue(DEGREENAME,DEFAULTDEGREE);
this.setValue(CREATEDATE,getCurrentDatetime());
this.setValue("ISREADONLY", "N");
return ret;
}
public int SAVE() throws MXException, RemoteException {
String SequenceNumber = this.getString(SEQUENCENUMBER);
if(SequenceNumber == null || SequenceNumber.equals("")){
MboRemote currMbo = (MboRemote) this.getMbo();
MboSetRemote msr = currMbo.getMboSet(MAXORDERCODE);
String maxNumber = "";
if(msr.isEmpty()){
} else {
MboRemote yumRemote = msr.getMbo(0);
maxNumber = yumRemote.getString(SEQUENCENUMBER);
}
maxNumber = getSequenNumber(maxNumber);
this.setValue(SEQUENCENUMBER,maxNumber);
}
String status = this.getString(ORDERSTATUSNAME);
if(status.equals(STATEDRAFT)){
this.setValue("EDITER", this.getMXSession().getUserName());
}else{}
int ret = super.SAVE();
return ret;
}
public int DELETE() throws MXException, RemoteException {
if(!this.getString(ORDERSTATUSNAME).equals(this.STATEDRAFT)){
Utility.showMessageBox(sessionContext.getCurrentEvent() ,
"信息",
"维修单已发送,不允许删除!",
0);
return -1;
}else{}
return super.DELETE();
}
public void PENDING() throws MXException,RemoteException{
String status = this.getString(this.ORDERSTATUSNAME);
if(status != null && !status.equals(this.STATENEW) && !status.equals(this.STATEPEDDING)){
Utility.showMessageBox(this.sessionContext.getCurrentEvent(),
"错误",
"当前状态的工作单不允许进行派单操作!",0);
return;
}else{}
String station = this.getString("STATIONCODE");
if(station == null || station.equals("")){
Utility.showMessageBox(this.sessionContext.getCurrentEvent(),
"错误",
"工作站未选择!",
0);
return;
}else{}
String engineer = this.getString("ENGINEERCODE");
if(engineer == null || engineer.equals("")){
Utility.showMessageBox(this.sessionContext.getCurrentEvent(),
"错误",
"维修工程师未选择!",
0);
return;
}else{}
Date resTime = this.getDate("RESPONSETIME");
if(resTime == null){
Utility.showMessageBox(this.sessionContext.getCurrentEvent(),
"错误",
"响应时间为空!",
0);
return;
}else{}
this.setValue(ORDERSTATUSNAME,STATEPEDDING);
this.setValue("ASSIGNER", this.getMXSession().getUserName());
this.SAVE();
}
public void CLOSE() throws MXException,RemoteException{
String state = this.getString(this.ORDERSTATUSNAME);
if(!state.equals(this.STATEPEDDING)){
Utility.showMessageBox(this.sessionContext.getCurrentEvent(),
"错误",
"未进行派单操作!",
0);
return;
}else{}
String station = this.getString("STATIONCODE");
if(station == null || station.equals("")){
Utility.showMessageBox(this.sessionContext.getCurrentEvent(),
"错误",
"工作站未选择!",
0);
return;
}else{}
String engineer = this.getString("ENGINEERCODE");
if(engineer == null || engineer.equals("")){
Utility.showMessageBox(this.sessionContext.getCurrentEvent(),
"错误",
"维修工程师未选择!",
0);
return;
}else{}
Date arrTime = this.getDate("ARRIVETIME");
if(arrTime == null){
Utility.showMessageBox(this.sessionContext.getCurrentEvent(),
"错误",
"实际到场时间为空!",
0);
return;
}else{}
Date colTime = this.getDate("CLOSETIME");
if(colTime == null){
Utility.showMessageBox(this.sessionContext.getCurrentEvent(),
"错误",
"服务完成时间为空!",
0);
return;
}else{}
this.setValue(ORDERSTATUSNAME,this.STATECLOSE);
this.SAVE();
this.getMbo().setFlag(7L, true);
}
public void CANCEL() throws MXException,RemoteException{
String canReason = this.getString("CANCELREASON");
if(canReason == null || canReason.equals("")){
Utility.showMessageBox(this.sessionContext.getCurrentEvent(),
"错误",
"请填写取消原因!",
0);
return;
}
this.setValue("CANCELTIME",this.getCurrentDatetime());
this.setValue(ORDERSTATUSNAME, this.STATECANCEL);
this.SAVE();
this.getMbo().setFlag(7L, true);
}
public void SENDOR() throws MXException, RemoteException{
if(!this.getString(ORDERSTATUSNAME).equals(this.STATEDRAFT)){
Utility.showMessageBox(sessionContext.getCurrentEvent() ,
"信息",
"维修单已发送!",
0);
return;
}else{}
this.setValue(ORDERSTATUSNAME, this.STATENEW);
this.setValue("SENDDATE",getCurrentDatetime());
this.SAVE();
this.getMbo().setFlag(7L, true);
}
public String getSequenNumber(String num1) throws RemoteException, MXException{
String num = "";
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
Date curDate = this.getDate("CREATEDATE");
String currDate = sdf.format(curDate);
if(num1 == null || num1.equals("")){
num = currDate + "001";
}else{
num = num1.substring(8,num1.length());
int temp = Integer.parseInt(num) + 1;
int len = Integer.toString(temp).length();
switch(len){
case 1:
num = "00" + Integer.toString(temp);
break;
case 2:
num = "0" + Integer.toString(temp);
break;
default:
num = Integer.toString(temp);
break;
}
num = currDate + num;
}
return num;
}
public boolean setReadOnlyState() throws RemoteException, MXException{
boolean lb = false;
String state = this.getString(ORDERSTATUSNAME);
if(state.equals(this.STATENEW)){
this.getMbo().setFlag(7L, true);
lb = true;
}else{}
return lb;
}
/**
* get current date time
* @return data format(yyyy-MM-dd hh:mm:ss)
*/
public String getCurrentDatetime(){
//SimpleDateFormat sm = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
Calendar now = Calendar.getInstance();
String time = now.get(Calendar.YEAR)+"-"+(now.get(Calendar.MONTH)+1)+"-"+now.get(Calendar.DAY_OF_MONTH)+" "
+now.get(Calendar.HOUR_OF_DAY)+":"+now.get(Calendar.MINUTE)+":"+now.get(Calendar.SECOND);
return time;
}
}
分享到:
相关推荐
- **类的发布**:发布类是将Java类与Maximo应用程序关联的过程,使得它们在前端可用。 - **进入应用程序设计器应用程序**:这是创建和编辑Maximo应用程序的工具,可以定义屏幕布局、字段显示、业务规则等。 - **新建...
本开发指南旨在为Maximo 6.20应用程序提供全面的开发指导与技术支持,包括系统架构设计、开发环境搭建、代码编写规范及最佳实践等内容。 #### 2. 系统架构 Maximo 6.20的系统架构主要分为以下几个层次: - **业务...
10. **MAXIMO开发入门**:为开发者提供指导,包括如何使用MAXIMO的应用程序开发框架(ADF)、自定义字段、工作流和Web服务。 11. **系统配置与优化**:讨论如何根据企业需求调整MAXIMO的配置参数,提高系统性能,并...
### Maximo 7.1 认证学习材料 #### IBM MAXIMO 认证教材概览 本教材旨在帮助读者成功获得IBM Maximo...通过以上内容的学习,考生将能够全面了解Maximo V7.1的主要功能和操作方法,为顺利通过认证考试打下坚实的基础。
13. `MAXAPPS`:Maximo应用程序相关数据。 14. `MAXDOMAIN`:所有Maximo域的信息。 15. `MAXMENU`:导航菜单配置。 16. `MAXMODULES`:Maximo模块定义。 17. `MAXMESSAGES`:错误和提示信息。 18. `MAXOBJECT`:记录...
在Maximo中,过滤器是用于优化应用程序列表显示的关键工具。当在数据库配置的属性列中没有找到可过滤的文本框时,这通常意味着配置存在问题或未正确设置。为了解决这个问题,魏慧建议检查并确保在相关的属性列上正确...
#### 五、问题及解决方法 - **数据一致性问题**:通过使用共享数据库和缓存机制来确保各节点间的数据一致性。 - **会话管理**:采用粘性会话策略或者通过负载均衡器进行会话复制,确保用户会话的一致性。 - **故障...
Maximo 7.1.1.8 官方API是一个重要的资源,对于开发和维护IBM Maximo Asset Management系统的程序员来说,它...通过深入学习和实践,开发者可以构建出高效、稳定且功能丰富的应用程序,提升企业资产管理的效率和效果。
例如,你可以创建一个名为`JDTes`的Java类,该类扩展了`SimpleCronTask`并重写了`cronAction()`方法,这是执行定时任务的核心方法。 2. **代码编写与部署** - 编写完`JDTes`类后,你需要将编译后的`.class`文件...
"maximo_Api文档_类文件详解"是一个关于Maximo API的详细文档,旨在为开发者提供深入理解Maximo底层方法的指南。.chm文件是一种Microsoft帮助文档格式,通常包含丰富的索引、搜索功能以及详细的技术信息。 在Maximo...
WEBSERVICE是一种基于网络的、松散耦合的服务提供和消费方式,它允许不同平台的应用程序之间进行数据交换。在JAVA中,通常使用SOAP(Simple Object Access Protocol)协议和WSDL(Web Services Description Language...
- **应用程序服务器**:用于运行 Maximo 应用程序的服务器。 - **数据库服务器**:存储 Maximo 数据的服务器。 - **系统要求**:文档中提到了典型的系统网络配置以及不同级别的设置,包括系统级、组织级和站点级...
AppBean是控制MAXIMO6应用程序界面操作的关键,例如新建、保存和发送工作流。通过自定义AppBean,可以实现特定的应用逻辑,如在HARV-EAM系统中参考`harv.webclient.beans.po.CtmPOAppBean`。AppBean的常用方法包括`...
按照官方文档逐步进行安装,包括数据库服务器、中间件以及Maximo应用程序的安装。 3. 注意检查并设置正确的环境变量。 4. 确保数据库服务器正确配置,例如监听器配置等。 **1.4 数据库DMP文件移植** - **移植...
通过深入学习和应用Maximo官方API,开发者可以构建出与Maximo系统无缝集成的应用程序,优化业务流程,提升工作效率。`maximo 官方API.chm`文件很可能是官方提供的帮助文档,包含了完整的API参考信息,是开发过程中不...
文档标题和描述提到了"一个基于eclipse的Maximo6集成开发环境配置说明",这是一份关于如何在Eclipse集成开发环境中配置Maximo 6的详细指南。...每个步骤都旨在帮助开发者顺利地进行Maximo应用程序的开发和调试工作。
RMI使得Java对象能够在不同的Java虚拟机之间进行交互,创建分布式应用程序。它的核心思想是接口与实现分离,通过桩(Stub)和框架(Skeleton)文件实现远程服务的调用。RMI系统包括远程服务接口定义、具体实现、桩...
- **启动Web应用程序**:测试WebSphere Application Server (WAS)、Tivoli Provisioning Manager (TPM) 和Maximo UI是否能够正常启动。 - **安装SRM Fixpack**:安装TSAM的最新修复包,以增强系统的稳定性和安全性。...