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