@Override
 public void afterNodeTriggered(ProcessNodeTriggeredEvent event) {
   // trigger this to record some of the data (like work item id) after activity was triggered
   NodeInstanceLog log =
       (NodeInstanceLog)
           ((NodeInstanceImpl) event.getNodeInstance()).getMetaData().get("NodeInstanceLog");
   builder.buildEvent(event, log);
 }
 @Override
 public void afterNodeTriggered(ProcessNodeTriggeredEvent event) {
   // trigger this to record some of the data (like work item id) after activity was triggered
   NodeInstanceLog log =
       (NodeInstanceLog)
           ((NodeInstanceImpl) event.getNodeInstance()).getMetaData().get("NodeInstanceLog");
   NodeInstanceLog logUpdated = (NodeInstanceLog) builder.buildEvent(event, log);
   if (logUpdated != null) {
     sendMessage(log, AFTER_NODE_ENTER_EVENT_TYPE);
   }
 }
 @Override
 public void beforeNodeTriggered(ProcessNodeTriggeredEvent event) {
   NodeInstanceLog log = (NodeInstanceLog) builder.buildEvent(event);
   persist(log, event);
   ((NodeInstanceImpl) event.getNodeInstance()).getMetaData().put("NodeInstanceLog", log);
 }
 @Override
 public void beforeNodeTriggered(ProcessNodeTriggeredEvent event) {
   NodeInstanceLog log = (NodeInstanceLog) builder.buildEvent(event);
   sendMessage(log, BEFORE_NODE_ENTER_EVENT_TYPE);
   ((NodeInstanceImpl) event.getNodeInstance()).getMetaData().put("NodeInstanceLog", log);
 }