Hi
Could you please help me figuring out how to insert/update database change before i start process. I have a custom EventHandler which on save/change runs process. Inside of the process I am getting Bank object by it's id but it is empty.
public class BankEventHandler extends AbstractEventHandler {
CLogger log = CLogger.getCLogger(BankEventHandler.class);
@Override
protected void doHandleEvent(Event event) {
// TODO Auto-generated method stub
PO po = getPO(event);
if (po instanceof MBank) {
Properties context = Env.getCtx();
MBank bank = (MBank) po;
Integer tableId = bank.get_Table_ID();
Integer recordId = bank.get_ID();
Integer processId = MProcess.getProcess_ID("Single record sync", null);
MProcess process = MProcess.get(context, processId);
log.warning("table ID = " + tableId.toString() + " record ID = " + recordId.toString());
ProcessInfo pi = new ProcessInfo (process.getName(), process.getAD_Process_ID(), tableId, recordId);
pi.setAD_Client_ID(Env.getAD_Client_ID(context));
pi.setAD_User_ID(Env.getAD_User_ID(context));
log.warning("------ sync process started ------");
ServerProcessCtl.process(pi, Trx.get(bank.get_TrxName(), false));
if (pi.isError()) {
log.warning("------ sync process failed ------");
// fail("Error running Sync process" + (Util.isEmpty(pi.getSummary()) ? "" : " : " +pi.getSummary()));
return;
}
}
}
@Override
protected void initialize() {
// TODO Auto-generated method stub
registerTableEvent(IEventTopics.PO_AFTER_CHANGE, MBank.Table_Name);
registerTableEvent(IEventTopics.PO_AFTER_NEW, MBank.Table_Name);
}
}
public class SingleRecordSync extends SvrProcess {
private Integer tableId;
private Integer recordId;
@Override
protected void prepare() {
// TODO Auto-generated method stub
log.warning("------ warning message single record sync prepare ------");
ProcessInfo processInfo = this.getProcessInfo();
tableId = processInfo.getTable_ID();
recordId = processInfo.getRecord_ID();
}
@Override
protected String doIt() throws Exception {
// TODO Auto-generated method stub
log.warning("------ warning message single record sync do it ------");
log.warning("table ID = " + tableId.toString() + " record ID = " + recordId.toString());
Bank bank = new Bank();
bank.setRecordId(recordId);
bank.sync();
return null;
}
}
public class Bank {
private Integer recordId;
CLogger log = CLogger.getCLogger(Bank.class);
public void setRecordId(Integer id) {
this.recordId = id;
}
public void sync() {
MBank bank = MBank.get(this.recordId);
log.warning("--------- Documnet № " + bank.getC_Bank_ID() + " Bank name " + bank.getName());
}
}
16:26:47.648-----------> SingleRecordSync.doIt: ------ warning message single record sync do it ------ [223]
16:26:47.649-----------> SingleRecordSync.doIt: table ID = 296 record ID = 1000006 [223]
16:26:47.652===========> MBank.load: NO Data found for C_Bank_ID=1000006 [223]
16:26:47.800-----------> BankEventHandler.doHandleEvent: ------ sync process failed ------ [223]
16:26:47.801-----------> GridTable.saveWarning: SaveError - [223]
And there is no data inside table c_bank