package org.drools.declaredtypes;
unit AlertingService;

import org.kie.kogito.rules.DataStream;
import org.kie.kogito.rules.RuleUnitData


declare Event
   type:  String
   value: int
end

declare Alert
  severity: String
  message:  String
end

declare AlertingService extends RuleUnitData
   eventData: DataStream<Event>
   alertData: DataStream<Alert>
end


rule IncomingEvent when
   // matches when a temperature higher than 30 °C is registered (OOPath syntax)
   $e : /eventData [ type == "temperature", value >= 30 ]
then
   System.out.println("incoming event: "+ $e);
   alertData.append( new Alert( "warning", $e.toString() ) );
end

query Warnings
   alerts: /alertData [ severity == "warning" ]
end