All Downloads are FREE. Search and download functionalities are using the official Maven repository.

libx.miscellaneous.flink.0.0.12.source-code.test-timer-drools.drl Maven / Gradle / Ivy

import io.gitbub.devlibx.easy.helper.map.StringObjectMap;
import io.github.devlibx.easy.rule.drools.ResultMap;
import java.util.Objects;

rule "Filter Input Stream"
  dialect "java"
  agenda-group "filter-input-stream"
  when
      event : StringObjectMap()
      resultMap: ResultMap()
  then
      String status = event.get("data", "order_status", String.class);
      String orderId = event.get("data", "order_id", String.class);

      if (Objects.equals("COMPLETED", status) || Objects.equals("INIT", status)) {
        resultMap.put("skip", false);
        resultMap.put("group-key", orderId);
      } else {
        resultMap.put("skip", true);
      }
end

rule "Order Initiated "
  dialect "java"
  agenda-group "initial-event-trigger"
  when
      event : StringObjectMap()
      resultMap: ResultMap()
  then

     String status = event.get("data", "order_status", String.class);

     if (Objects.equals("INIT", status)) {

       // Keep this in state store with TTL of 10 min
       // Wait for completed event in 30 sec
       resultMap.put("retain-state", true);
       resultMap.put("retain-ttl-in-sec", 600);
       resultMap.put("retain-state-expiry-in-sec", 2);

       // Order id is the key we use as state key
       String orderId = event.get("data", "order_id", String.class);
       resultMap.put("retain-state-key", orderId);

       // This is the state object we persist - we will get this back in other calls
       StringObjectMap state = StringObjectMap.of(
            "user_id", event.get("data", "user_id", String.class),
            "order_id", event.get("data", "order_id", String.class)
       );
       resultMap.put("retain-object", state);

     } else if (Objects.equals("COMPLETED", status)) {

        String orderId = event.get("data", "order_id", String.class);
        resultMap.put("retain-state-key", orderId);

        resultMap.put("retain-state-delete", true);
        resultMap.put("retain-state", false);
     } else {
        resultMap.put("retain-in-state", false);
     }

end

rule "Order Expire Trigger"
  dialect "java"
  agenda-group "expiry-event-trigger"
  when
      event : StringObjectMap()
      resultMap: ResultMap()
  then
      String orderId = event.getString("order_id");
      System.out.println(event);
      System.out.println("Input:" + event.getString("user_id") + " " + orderId);

      StringObjectMap state = StringObjectMap.of(
             "user_id", event.getString("user_id"),
             "order_id", event.getString("order_id")
      );
      System.out.println("state");
      System.out.println(state);
      resultMap.put("trigger-object", state);
      resultMap.put("trigger-expiry", true);
      resultMap.put("retain-state-key", orderId);

      System.out.println("--------------------");
end




© 2015 - 2025 Weber Informatics LLC | Privacy Policy