Я пытаюсь запустить следующие правила в Drool Fusion (версия 5.4.1), но он не работает.Timer in Drools Fusion не работает
В идеале, он должен печатать «HELLO WORLD» каждые 7 секунд, это даже не запускается один раз.
Может кто-нибудь, пожалуйста, помогите мне понять таймер в Drools?
import com.drools.message.Message rule "Test" timer(int: 7s 7s) when message:Message (type=="Hello") then System.out.println("Hello World, Drools! " + message.getMsgtext()); end
My code to run the above Rule is:
public class TestDrools { private static String DRL_FILE = "test_drools.drl"; private static KnowledgeBuilder kbuilder = KnowledgeBuilderFactory .newKnowledgeBuilder(); private static Collection pkgs; private static KnowledgeBase kbase = KnowledgeBaseFactory .newKnowledgeBase(); private static StatefulKnowledgeSession ksession; private static WorkingMemoryEntryPoint entryPoint; public static void main(String[] args) { init(); while (true) { Message msg = new Message(); msg.setType("Hello"); msg.setMsgtext("1"); ksession.insert(msg); } } private static void init() { initialiseDrools(); } private static void initialiseDrools() { kbuilder.add(ResourceFactory.newClassPathResource(DRL_FILE), ResourceType.DRL); if (kbuilder.hasErrors()) { System.out.println(kbuilder.getErrors().toString()); throw new RuntimeException("Unable to compile drl\"."); } pkgs = kbuilder.getKnowledgePackages(); KnowledgeBaseConfiguration config = KnowledgeBaseFactory .newKnowledgeBaseConfiguration(); config.setOption(EventProcessingOption.STREAM); kbase = KnowledgeBaseFactory.newKnowledgeBase(config); kbase.addKnowledgePackages(pkgs); KnowledgeSessionConfiguration conf = KnowledgeBaseFactory .newKnowledgeSessionConfiguration(); conf.setOption(ClockTypeOption.get("pseudo")); ksession = kbase.newStatefulKnowledgeSession(conf, null); entryPoint = ksession.getWorkingMemoryEntryPoint("entryone"); new Thread() { @Override public void run() { ksession.fireUntilHalt(); } }.start(); } }
Спасибо -Sanjay
Я уверен, что вы используете fireUntilHalt()? Возможно, вам стоит указать ваш код API. – Steve
новый Thread() { \t \t \t @Override \t \t \t общественности недействительным запуска() { \t \t \t \t ksession.fireUntilHalt(); \t \t \t} \t \t} .start(); \t} – user3164370
Вы не используете псевдо-часы случайно? – laune