Alert Scripts

It is possible to create scripts, written in pseudo Java, that can be injected at runtime and used by Webhooks and Websockets.

An Alert Script can be very simple or very complex, their scope is to evaluate conditions and return true or false. If the script returns true the message is sent.

Alerts can be created and installed at run-time into the system. These are the predefined alerts available:

Bunker price

import com.dataloy.ds.*;
import com.dataloy.*;
import java.math.*;
BunkerOrderLine bunkerOrderLineOld= null;
BunkerOrderLine bunkerOrderLineNew= null;
if(dlpObject instanceof BunkerOrderLine)
    bunkerOrderLineNew=  dlpObject;
if(oldDlpObject instanceof BunkerOrderLine)
    bunkerOrderLineOld=  oldDlpObject;
if( bunkerOrderLineOld!=null && bunkerOrderLineNew!=null && ((bunkerOrderLineOld.getUnitPrice()==null && bunkerOrderLineNew.getUnitPrice()!=null) || (bunkerOrderLineOld.getUnitPrice()!=null && bunkerOrderLineNew.getUnitPrice()==null) ||    !bunkerOrderLineNew.getUnitPrice().equals(bunkerOrderLineOld.getUnitPrice()))){
    mapResultsForMessage.put("?1",bunkerOrderLineNew.getBunkerType().getBunkerTypeDesc());
    mapResultsForMessage.put("?2",bunkerOrderLineNew.getBunkerOrder().getPortCall().getVoyage().getVessel().getVesselName());
    if(bunkerOrderLineNew.getBunkerOrder().getPortCall().getVoyage().getVoyageHeader()!= null && bunkerOrderLineNew.getBunkerOrder().getPortCall().getVoyage().getVoyageHeader().getReferenceNo()!=null)
        mapResultsForMessage.put("?3",bunkerOrderLineNew.getBunkerOrder().getPortCall().getVoyage().getVoyageHeader().getReferenceNo());
    else
        mapResultsForMessage.put("?3",bunkerOrderLineNew.getBunkerOrder().getPortCall().getVoyage().getKey());
     
    mapResultsForMessage.put("?4",bunkerOrderLineNew.getBunkerOrder().getPortCall().getPort().getPortName());
     
    Double value1= new BigDecimal(bunkerOrderLineNew.getUnitPrice()).setScale(2, RoundingMode.HALF_UP).doubleValue();
    Double value2= new BigDecimal(bunkerOrderLineOld.getUnitPrice()).setScale(2, RoundingMode.HALF_UP).doubleValue();
     
     
    String strValue1= value1.toString();
    String appValue1= strValue1.substring(strValue1.indexOf(".")+1, strValue1.length());
    while(appValue1.length()<2)
        appValue1= appValue1 +0;
    String finalValue1= strValue1.substring(0,strValue1.indexOf(".")+1)+appValue1;
     
     
    String strValue2= value2.toString();
    String appValue2= strValue2.substring(strValue2.indexOf(".")+1, strValue2.length());
    while(appValue2.length()<2)
        appValue2= appValue2 +0;
    String finalValue2= strValue2.substring(0,strValue2.indexOf(".")+1)+appValue2;
     
     
    mapResultsForMessage.put("?5",finalValue1  );
    mapResultsForMessage.put("?6",finalValue2  );
     
     
    return true;
}
else{
    return false;
}

Bunker quantity

Bunker date

Offhire start date

Days in port updated

ETA outside laycan

Was this helpful?