JBoss Community

Re: Drools Simple rule evaluation

created by ous2k in jBPM - View the full discussion

i' m sorry for making things hard to analyse , i think you are talking about   --> ksession.startProcess("openState",params);

this all the code

 

package com.ocana.workflow.dabviewticketing.server.bo;

 

 

import java.util.Date;

import java.util.HashMap;

import java.util.Map;

import java.util.Properties;

 

 

import org.drools.KnowledgeBase;

import org.drools.KnowledgeBaseFactory;

import org.drools.builder.KnowledgeBuilder;

import org.drools.builder.KnowledgeBuilderError;

import org.drools.builder.KnowledgeBuilderErrors;

import org.drools.builder.KnowledgeBuilderFactory;

import org.drools.builder.ResourceType;

import org.drools.io.ResourceFactory;

import org.drools.logger.KnowledgeRuntimeLogger;

import org.drools.logger.KnowledgeRuntimeLoggerFactory;

import org.drools.runtime.KnowledgeSessionConfiguration;

import org.drools.runtime.StatefulKnowledgeSession;

import org.jbpm.process.instance.event.DefaultSignalManagerFactory;

import org.jbpm.process.instance.impl.DefaultProcessInstanceManagerFactory;

 

 

import com.ocana.workflow.dabviewticketing.server.model.SystemStatus;

import com.ocana.workflow.dabviewticketing.server.model.Ticket;

//import com.sample.CustomProcessEventListener;

 

 

//import com.sample.CustomProcessEventListener;

 

 

public class JBPMClient {

 

 

 

          public static final void main(String[] args) {

                    try {

 

                              KnowledgeBase eventKbase = readEventKnowledgeBase(); //read.dlr

                              StatefulKnowledgeSession eventKsession = eventKbase.newStatefulKnowledgeSession();

 

                              KnowledgeBase kbase = readKnowledgeBase();//read BPMN

                              StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();

 

                              Properties properties = new Properties();

                              properties.put("drools.processInstanceManagerFactory",DefaultProcessInstanceManagerFactory.class.getName());

                              properties.put("drools.processSignalManagerFactory"  ,DefaultSignalManagerFactory.class.getName());

                              KnowledgeSessionConfiguration config = KnowledgeBaseFactory.newKnowledgeSessionConfiguration(properties);

 

                              ksession = kbase.newStatefulKnowledgeSession(config, null);

                              ksession.addEventListener(new CustomProcessEventListener(eventKsession));

                              KnowledgeRuntimeLogger logger = KnowledgeRuntimeLoggerFactory.newFileLogger(ksession, "test");

 

                              //insering Ticket

                              Ticket ticket = new Ticket();

                              ticket.setStatus("open");

                              ticket.setContent("testing content");

                              ticket.setOpeningDate(new Date());

                              ticket.setIdTicket(1);

 

                              ksession.insert(ticket);

                              ksession.fireAllRules();

                              Map<String, Object> params = new HashMap<String, Object>();

                              params.put("ticket", ticket);

                              ksession.startProcess("openState",params);

 

                              logger.close();

                    } catch (Throwable t) {

                              t.printStackTrace();

                    }

          }

 

          private static KnowledgeBase readKnowledgeBase() throws Exception {

                    KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();

                    kbuilder.add(ResourceFactory.newClassPathResource("StateMachine.bpmn"), ResourceType.BPMN2);

                    return kbuilder.newKnowledgeBase();

          }

 

          private static KnowledgeBase readEventKnowledgeBase() throws Exception {

                    KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();

                    kbuilder.add(ResourceFactory.newClassPathResource("OpenStateRules.drl"), ResourceType.DRL);

                    KnowledgeBuilderErrors errors = kbuilder.getErrors();

                    if (errors.size() > 0) {

                              for (KnowledgeBuilderError error: errors) {

                                        System.err.println(error);

                              }

                              throw new IllegalArgumentException("Could not parse knowledge.");

                    }

                    KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();

                    kbase.addKnowledgePackages(kbuilder.getKnowledgePackages());

                    return kbase;

          }

}

 

 

 

#created on: Mar 7, 2012

#package com.hemilco;

#list any import classes here.

import org.drools.runtime.process.WorkflowProcessInstance;

import org.drools.runtime.process.ProcessContext

import org.drools.event.process.ProcessStartedEvent;

import com.ocana.workflow.dabviewticketing.server.model.Ticket;

import java.util.Date

import java.util.List

#declare any global variables here

declare Ticket

          @role(event)

end

 

 

declare Server

   idTicket : int

   status : int

   openingDate : Date // percentage

   content: Date

end

 

 

dialect "mvel"

          rule "Check 5mn condition"

          when

                                 $ticket:Ticket(status=="open");

          then

                  System.out.println("New Ticket is opened")

                              #$server.getVirtualizations().add($request.getVirtualization());

          end

Reply to this message by going to Community

Start a new discussion in jBPM at Community