Java Actions API reference - Persistence
Persistence when using Java actions makes use of the ESQL Persistence API. Objects are linked in the Java action by a temporary ObjId, the final IDs being allocated by the ESQL Persistence API after exiting the Java Action node.
The following code style can be used to create new records:
//Create Transmission
Transmission transmission = new Transmission();
FlowThreadProperties props = FlowThreadProperties.getInstance();
transmission.setAPP_ID(props.getAppId());
transmission.setCID("cId01");
transmission.setUID("uId01");
transmission.setSTATUS("status01");
transmission.setMASTER_FLAG("Y");
transmission.setEVENT_ID(Long.valueOf(1));
transmission.setSUBTYPE("subtype01");
transmission.setSENDER("sender01");
transmission.setRECEIVER("receiver01");
transmission.setPARTY_ID(Long.valueOf(1));
transmission.setCHANNEL_ID(Long.valueOf(1));
transmission.setDATA("transmission data".getBytes());
transmission.setCCSID(Long.valueOf(1208));
transmission.setENCODING(Long.valueOf(1));
ObjId ptId = transmission.create("PTGroup1");
//Create Batch, related to above PT
Batch bat = new Batch();
bat.setAPP_ID(props.getAppId());
bat.setCID("bat cID");
bat.setSTATUS("S_BatValid");
bat.setMASTER_FLAG("N");
bat.setEVENT_ID(Long.valueOf(2));
bat.setSUBTYPE("PAYMENT_BATCH");
bat.setTRANSMISSION_ID(ptId); //Using the PT ID from above
bat.setVALUE_AMOUNT(BigDecimal.TEN);
bat.setBATCH_DATE(new FTMDate(System.currentTimeMillis()));
bat.setTXN_COUNT(Long.valueOf(3));
bat.setBATCH_MAPPED("Y");
ObjId batId = bat.create("BatGroup1");
//Create an Obj Value for the Batch
ObjValue ov1 = new ObjValue();
ov1.setOBJ_ID(batId);
ov1.setCATEGORY("BATCH");
ov1.setKEY("VALUE_AMOUNT");
ov1.setSMALL_VALUE("10.00");
ov1.create();
//Create 1 Payment in the Batch
PaymentTxn pay = new PaymentTxn();
pay.setBATCH_ID(batId);
pay.setAPP_ID(props.getAppId());
pay.setCID("CID1");
pay.setSTATUS("S_InTxnComplete");
pay.setMASTER_FLAG("Y");
pay.setEVENT_ID(Long.valueOf(1));
pay.setOBJ_CLASS("OUT_TXN_NOWAIT");
pay.setSUBTYPE("LIQUIDITY_REQ");
pay.setTRANSMISSION_ID(ptId);
pay.setBANK_CODE("BANKUS40");
pay.create("PayGroup1");
//Declare advanced routing info
Transaction.setRoutingData("TxnGroup1", "OUT_TXN_NOWAIT", "LIQUIDITY_REQ", "PRIMARY", null);
Transaction.setRoutingData("TxnGroup2", "OUT_TXN_WAIT", "GW_REQ", "PRIMARY", null);
//Create 2 Transactions not in the above Batch
Transaction txn = new Transaction();
txn.setAPP_ID(props.getAppId());
txn.setCID("CID2");
txn.setSTATUS("S_InTxnComplete");
txn.setMASTER_FLAG("Y");
txn.setEVENT_ID(Long.valueOf(4));
txn.setOBJ_CLASS("OUT_TXN_NOWAIT");
txn.setSUBTYPE("LIQUIDITY_REQUEST");
txn.setTRANSMISSION_ID(ptId);
ObjId txnId = txn.create("TxnGroup1");
Transaction txn2 = new Transaction();
txn2.setCID("CID2");
txn2.setSTATUS("S_InTxnComplete");
txn2.setMASTER_FLAG("Y");
txn2.setEVENT_ID(Long.valueOf(4));
txn2.setOBJ_CLASS("OUT_TXN_NOWAIT");
txn2.setSUBTYPE("LIQUIDITY_REQUEST");
txn2.setTRANSMISSION_ID(ptId);
txnId = txn2.create("TxnGroup2");
//Create an Error record
Error err = new Error();
err.setColVal(Error.TYPE, "DUPL");
err.setColVal(Error.COMPONENT_TYPE, "ACTION");
err.setColVal(Error.COMPONENT_NAME, "my action");
err.setColVal(Error.DESCRIPTION, "description");
err.setColVal(Error.OBJ_ID, ptId);
err.create();
//Raise an event only if a Transaction gets persisted
e_PTValid.setConditionalObject(txnId);
e_PTValid.raise("TRANSMISSION",ptId);