創建一個簡單的ModelValidator

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 MyModelValidator implements 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(ModelValidationEngine engine, 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(PO po, 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(PO po, 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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章