创建一个简单的ModelValidator

来源:互联网 发布:安卓版本 知乎 编辑:程序博客网 时间:2024/06/14 20:16

http://wiki.adempiere.net/ModelValidator

http://wiki.idempiere.org/en/Developing_Plug-Ins_-_ModelValidator

目的:可以将自己的插件与其他所有需要的信息共享,以使其能够运行。

环境:

步骤:

1、在已存在的插件里或者新建一个空的插件新建一个类--MyModelValidator.java

2、实现org.compiere.model.ModelValidator,代码如下:

package org.rhzn.mes.modelvalidator;

 

import org.compiere.model.MClient;

import org.compiere.model.MOrder;

import org.compiere.model.ModelValidationEngine;

import org.compiere.model.ModelValidator;

import org.compiere.model.PO;

import org.compiere.util.CLogger;

 

public class MyModelValidatorimplements ModelValidator{

CLogger log = CLogger.getCLogger(MyModelValidator.class);

private int m_AD_Client_ID = -1;

private int m_AD_Org_ID = -1;

private int m_AD_Role_ID = -1;

private int m_AD_User_ID = -1;

@Override

public void initialize(ModelValidationEngineengine, MClient client) {

// TODO Auto-generated method stub

// This line must come before registering the model changes

//client = null for global validator

if (client !=null) {

m_AD_Client_ID = client.getAD_Client_ID();

}

//register for model change on C_Order

engine.addModelChange(MOrder.Table_Name,this);

//register for document events on MOrder

engine.addDocValidate(MOrder.Table_Name,this);

}

/**

 *Get Client to be monitored

 *@return AD_Client_ID client

 */

@Override

public int getAD_Client_ID() {

// TODO Auto-generated method stub

return m_AD_Client_ID;

}

 

@Override

public String login(int AD_Org_ID,int AD_Role_ID,int AD_User_ID) {

// TODO Auto-generated method stub

m_AD_Org_ID = AD_Org_ID;

m_AD_Role_ID = AD_Role_ID;

m_AD_User_ID = AD_User_ID;

return null;

}

 

@Override

public String modelChange(POpo, int type)throws Exception {

// TODO Auto-generated method stub

 if (po.get_TableName().equals("C_Order") &&type == TYPE_BEFORE_DELETE)

   {

      MOrder order = (MOrder)po;

      System.out.println(">>>>>>>>>>>>>>>>>>>>>>");

      // put your code here

   }

   return null;

}

 

@Override

public String docValidate(POpo, int timing) {

// TODO Auto-generated method stub

if (timing ==TIMING_BEFORE_COMPLETE) {

      if (po.get_TableName().equals(MOrder.Table_Name))

      {

          //put your code here

          //it is executed every time an order is about to complete

      }

   }

   return null;

}

 

}

3、打开配置文件 并点击Extensions 1

 

新建一个ModelValidator 2

 

单击完成后右键>New>listener class为你创建的ModelValidator的全名(包名+类名)3

复制class 粘贴到 ID/ Name 4

 

4、启动程序 Superuser/System实体选择System

5、打开Model Validator 菜单>新建一条数据(Activate选中) 5

 

6、重新启动,确保插件已经启动,登陆的时候实体选择GardenWorld

7、因为在第二步中是以销售订单删除为例: 6、7

 

所以此时打开 销售订单进行删除操作 此时后台会打印出>>>>>>>>> 8