You are here: Business Rules > Business Actions > Execute JavaScript > Secondary Object Bind

Secondary Object Bind

Business rules can use the Secondary Object bind in conjunction with the Matching and Linking functionality when there is a need for binding another object in addition to the Current Object. A number of the golden record match action handlers require access to two objects (for example, two golden records in merge and split cases).

For example, a business action selected in the Matching Algorithm's Match Action when merging two golden records could work on the two golden records to be merged using the Current Object and Secondary Object binds.

For more information about golden record handlers, see Updating Golden Records here.

The example below shows a simple merge action that deletes the enrichment object for a golden record that is to be deleted as the consequence of a merge.

function hasRefToObjectOfType(source, refType, objectTypeID) {
grRefsList = source.getReferences(refType);
for (var i = 0; i < grRefsList.size(); i++) {
if (grRefsList.get(i).getTarget().getObjectType().getID() == objectTypeID) {
return true;
}
}
return false;
}
function deleteERForGR(gr, grRefType, erObjectTypeID) {
grRefsList = gr.getReferences(grRefType);
for (var i = 0; i < grRefsList.size(); i++) {
if (grRefsList.get(i).getTarget().getObjectType().getID() == erObjectTypeID) {
var er = grRefsList.get(i).getTarget();
try {
grRefsList.get(i).delete();
er.delete();
}
catch(e) {
throw e.getMessage();
}
return;
}
}
}
var soObjectTypeID = "ExternalItem";
var erObjectTypeID = "ExternalItemEnrichmentRecord";
var aStays = hasRefToObjectOfType(goldenRecordA, grRefType, soObjectTypeID);
var bStays = hasRefToObjectOfType(goldenRecordB, grRefType, soObjectTypeID);
if (aStays && bStays) {
throw "Something is wrong. Both GRs to be merged have references to source objects.";
}
if (aStays) {
deleteERForGR(goldenRecordB, grRefType, erObjectTypeID);
}
if (bStays) {
deleteERForGR(goldenRecordB, grRefType, erObjectTypeID);
}
*/
erFunctions.deleteERForGR(goldenRecordB, grRefType, erObjectTypeID);
}

2017, Stibo Systems