maximo功能修改笔记

Posted on 2015-11-05 15:17  Li理  阅读(1315)  评论(0编辑  收藏  举报

      经过前几次的简单的修改系统功能,对maximo的bean开发已经有了一定了解,现在是耗时近两个礼拜来修改了一项系统功能,所用到的知识 Bean Fld,

下面我认真总结修改功能过程中的学到的知识:

目标效果一:

         点击页面上新增的按钮,弹出一个dialog,然后在dialog里面可以进行多选,然后点击 “确定” 后,在当前的记录上新增已选中的记录,并把页面上的某个字段设置相应的值。

  解决步骤:

    1.在应用程序设计器导出当前设计页面的xml文件,然后用工具打开xml文件,在xml文件里新增一个dialog。 dialog可以在导出来的xml文件里选择一个然后复制进行修改(在这里提醒下:建议新建一个xml文件用来复制原来xml文件里的dialog,最后将复制修改后的dialog复制到原来的xml文件中,做好备份工作),dialog可以理解成弹出的框,以下截图是dialog的xml文件信息:

  这里最重要的是 id,id要做到不能重复,其次id为按钮属性上的事件值,中间的标签都是可以在应用程序设计器修改,只要有了dialog,就可以在应用程序设计器里进行应用程序的布局设计。做好了dialog就复制到

原来导出的xml文件中,然后再导入回去。

 

   2. 导入回去之后,就可以在应用程序设计器中弹出dialog然后进行布局设计,截图如下:

 

点击图中的控件会弹出一个 编辑对话框,在对话框里就可以找到刚刚我们导入进来的dialog,然后双击我们导入进来的dialog的id会弹出已经解析成页面的dialog的xml文件,如下图所示:

 

弹出了dialog,接下来就是布局dialog了,这里的布局设计和以前的布局一样。

 

  3. 在布局的过程中,里面的字段值虽然已经给定了,如果报红,或者在测试应用的时候后台报错,那么就要考虑关联问题了,如图:

这里的关联就是和设计时的字段的关联,然后这里的bean类,一般绑定bean类不在这里绑定,如果在这里绑定类可能会不执行class文件,一般在dialog文件中绑定,绑定类后就可以在类里面写相应的逻辑代码,如图:

 

   3. 在界面上设计个按钮,点击按钮弹出dialog,按钮的事件填写dialog的id就可以了,如图:

 

   好了,以上就是弹出dialog 在maximo里面的做法,具体的逻辑代码还要在代码里面写要实现的效果,这里 一般写 execute()方法,因为 dialogok和dialogcancel事件会默认调用它。在这里的注意事项还是在写xml文件的时候id不要重复。

 

 

目标效果二: 

         在页面上做个多部分文本,用来显示父级的idnum和description。在这里需要用到域和关联。

总结我对域的理解

在对 对象新建属性的时候,我们提到了域就相当于给该字段添加了一个check约束:
1. ALN域:数字 字母组合域,由value和description构成,一般用来做状态显示;
2.表域:从指定的对象中查找符合条件的对象供选择;
3. 数字域:使用数字数据类型供选择,一般为一些简单值;
4. 数据范围域:其值通过制定范围来定义;
5. 交叉参考域:通过对Maximo编程,恢复要插入另一字段中的字段值。与其他域不同,此域不涉及值列表,而是取另有一个记录的独特的值(如果此值存在);
 
用于 放大镜和右方向 图标的域:
 lookups + 类
 lookups + 表域/交叉域
 固定值、数字域 valueList
 meus 拼接
 
我这里用的是表域,没有用到lookups+类,写好关联关系就好了,写类可以处理一些业务逻辑。下面说说写类:
   
   对字段的操作,一般是写Fld类,Fld类的一些方法:
    1.构造器:用来确定对象:
     setRelatonship("","")//指定要查找的对象
    String[] as = {getMboValue().getAttributeName()};//获取当前对象属性的名称
    String[] as2 = {"ponum"};//指定目标表/对象的属性
    setLookupKeyMapInOrder(as, as2);//映射
    2.validate(): 进行一些验证,一般是在action()方法执行前执行  

    public void validate() throws MXException,RemoteException{
      MboRemote mbo = getMboValue().getMbo();
      String personid = mbo.getUserInfo().getPersonId();
      if(!personid.equals("MAXADMIN")){
      throw new MXApplicationException("", "只有MAXADMIN用户可选择");
      }
      super.validate();
    }

    3. action(): 选中或者清除时设置相关的动作    

    public void action() throws MXException,RemoteException{
      System.out.println("-------------------------------");
      super.action();
      String currentValue = getMboValue().getCurrentValue().asString();
      if(!currentValue.equals("")){
      getMboValue("PONUMMAS").setValue("content");
      }else{
        getMboValue("PONUMMAS").setValueNull();
      }
    }

    4. getList(): 加入限制条件,设置所需结果集列表
            public MboSetRemote getList() throws MXException,RemoteException{
        MboSetRemote list = super.getList();
        list.setWhere("1=1");
        list.reset();
        return list;
    }

 

最后总结:

      在当前页面需要新增但又要在列表里新增显示一条记录的情况,可以使用 :

   得到当前的页面的mainMbo---通过mainMbo.getThisMboSet()的到mboSet---再通过mboSet.add()在当前mboSet里新增mbo

 

 

 

注:纯为了自己的复习的同时帮助需要了解这方面的哥们的学习,如果有问题请告诉我,我一定在第一时间修改!

 

 

 

 

 

 

 

Copyright © 2024 Li理
Powered by .NET 8.0 on Kubernetes