package org.drools.grid.internal.commands; import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; import java.util.logging.Level; import java.util.logging.Logger; import org.drools.command.Context; import org.drools.command.impl.GenericCommand; import org.drools.command.impl.KnowledgeCommandContext; import org.drools.runtime.KnowledgeRuntime; import org.drools.runtime.StatefulKnowledgeSession; import org.drools.runtime.process.WorkItemHandler; public class RegisterRemoteWorkItemHandlerCommand implements GenericCommand<Object> { private String handler; private String workItemName; public RegisterRemoteWorkItemHandlerCommand() { } public RegisterRemoteWorkItemHandlerCommand(String workItemName, String handler) { this.handler = handler; this.workItemName = workItemName; } public String getHandler() { return this.handler; } public void setHandler(String handler) { this.handler = handler; } public String getWorkItemName() { return this.workItemName; } public void setWorkItemName(String workItemName) { this.workItemName = workItemName; } public Object execute(Context context) { StatefulKnowledgeSession ksession = ((KnowledgeCommandContext) context).getStatefulKnowledgesession(); WorkItemHandler workItemHandler = null; try { Class t = Class.forName( this.handler ); Constructor c = t.getConstructor( KnowledgeRuntime.class ); workItemHandler = (WorkItemHandler) c.newInstance( ksession ); } catch ( InstantiationException ex ) { Logger.getLogger( RegisterRemoteWorkItemHandlerCommand.class.getName() ).log( Level.SEVERE, null, ex ); } catch ( IllegalAccessException ex ) { Logger.getLogger( RegisterRemoteWorkItemHandlerCommand.class.getName() ).log( Level.SEVERE, null, ex ); } catch ( IllegalArgumentException ex ) { Logger.getLogger( RegisterRemoteWorkItemHandlerCommand.class.getName() ).log( Level.SEVERE, null, ex ); } catch ( InvocationTargetException ex ) { Logger.getLogger( RegisterRemoteWorkItemHandlerCommand.class.getName() ).log( Level.SEVERE, null, ex ); } catch ( NoSuchMethodException ex ) { Logger.getLogger( RegisterRemoteWorkItemHandlerCommand.class.getName() ).log( Level.SEVERE, null, ex ); } catch ( SecurityException ex ) { Logger.getLogger( RegisterRemoteWorkItemHandlerCommand.class.getName() ).log( Level.SEVERE, null, ex ); } catch ( ClassNotFoundException ex ) { Logger.getLogger( RegisterRemoteWorkItemHandlerCommand.class.getName() ).log( Level.SEVERE, null, ex ); } ksession.getWorkItemManager().registerWorkItemHandler( this.workItemName, workItemHandler ); return null; } @Override public String toString() { return "session.getWorkItemManager().registerWorkItemHandler(" + this.workItemName + ", " + this.handler + ");"; } }