Working with event rules in the database

Provides examples of using the Java API to work with event rules in the database.

The following examples indicate how you use the classes to work with event rules in the database:

Example 6: Adding an event rule to the database

Follow these steps:
  1. Define the event rule:
    String eventRuleName = "SampleEventRule";
    String eventRuleDescription = 
       "Define Event Rule; test MessageLoggerPlugIn and TWSObjectsMonitorPlugIn";
    Date today = new Date(System.currentTimeMillis());
    Date tomorrow = new Date(System.currentTimeMillis() + 86400000L);
    
    //EventRule definition
    
    EventRule er = new EventRule();
    er.setName(eventRuleName);
    er.setDescription(eventRuleDescription);
    er.setRuleType(EventRuleType.FILTER);
    er.setDraft(false);
    er.setValidFrom(today);
    er.setValidTo(tomorrow);
  2. Define the event condition. In this case the condition is a job submission:
    EventCondition evCond = new EventCondition();
    evCond.setPluginName(TWSObjectsMonitorPlugIn.PLUGIN_NAME);
    evCond.setEventType(JobUtil.EVENT_JOB_SUBMIT);
  3. Define the conditions that the event condition has to satisfy to trigger the rule action (the filtering predicate):
    String filterPred =	  "<attributeFilter name=\"JobStreamWorkstation\" 
                                              operator=\"eq\">"
                                              + "<value>MYWS</value>"
                                              + "</attributeFilter>"
    
    + "<attributeFilter name=\"JobStreamName\" operator=\"eq\">"
    + "<value>JS1</value>"
    				+ "</attributeFilter>"
    
    + "<attributeFilter name=\"JobName\" operator=\"eq\">"
    + "<value>JOB1</value>"
    + "</attributeFilter>"                        
    
    + "<attributeFilter name=\"Workstation\" operator=\"eq\">" 
    + "<value>MYHOST</value>"
    + "</attributeFilter>" 
    
    + "<attributeFilter name=\"Priority\" operator=\"range\">" 
    + "<value>10</value>" 
    + "<value>30</value>" 
    + "</attributeFilter>"
    
    + "<attributeFilter name=\"Monitored\" operator=\"eq\">" 
    + "<value>TRUE</value>" 
    + "</attributeFilter>"
    
    + "<attributeFilter name=\"EstimatedDuration\" operator=\"ge\">" 
    	+ "<value>400</value>" 
    	+ "</attributeFilter>"
    
    + "<attributeFilter name=\"Login\" operator=\"eq\">" 
    + "<value>TWSUser</value>" 
    + "</attributeFilter>"
    
    + "<attributeFilter name=\"EveryFrequency\" operator=\"ge\">" 
    + "<value>400</value>" 
    + "</attributeFilter>";
  4. Complete the event condition:
    evCond.setFilteringPredicate(filterPred);
  5. Add the event condition to the event rule:
    er.getTriggerEvents().add(evCond);
  6. Define the rule action. In this example, the rule action logs a message in the database:
    RuleAction action = new RuleAction();
    action.setPluginName(MessageLoggerPlugIn.PLUGIN_NAME);
    action.setActionType(MessageLoggerPlugInConstants.ACTION_TYPE_MESSAGE_LOG);
    action.setDescription("Adding the Message logger Plugin");
    action.setResponseType(RuleResponseType.ON_DETECTION);
  7. Define the value for the rule action parameter:
    Map parameterMap = new HashMap();
    parameterMap.put(MessageLoggerPlugInConstants.MESSAGE, "message");
    parameterMap.put(MessageLoggerPlugInConstants.OBJECT_KEY, "object key");
  8. Complete the rule action:
    action.getParameterMap().putAll(parameterMap);
  9. Add the rule action to the event rule:
    er.getActions().add(action);
  10. Add the event rule to the ConnModel interface:
    ConnModel myModel = null;
    //Get an instance of ConnModel interface...
    //...
    
    //Add the object
    
    Identifier erId = null;
    try 
    { 
    	erId = myModel.addTWSObject(er, null);
    }
    catch (ConnException e) 
    {
    	//Do something to recover...
    }

Example 7: Retrieve an event rule from the database by ID

Follow these steps:
  1. Obtain the event rule ID to be retrieved by any means appropriate to your interface
  2. Retrieve the event rule:
    EventRule eRuleRead = new EventRule();
    try 
    {
    	eRuleRead = 
          (EventRule) myModel.getTWSObject(EventRule.class, erId, false, null);
    }
    catch (ConnException e) 
    {
    	//Do something to recover...
    }

Example 8: Retrieve an event rule from the database by key (name)

Follow these steps:
  1. Obtain the event rule key (name) to be retrieved by any means appropriate to your interface
  2. Retrieve the event rule:
    EventRule eRuleRead = new EventRule();
    try 
    {
    	eRuleRead = 
    	   (EventRule) myModel.getTWSObject(EventRule.class, 
                                    new EventRuleKey(eventRuleName), false, null);
    }
    catch (ConnException e) 
    {
    	//Do something to recover...
    }

Example 9: Delete an event rule from the database by ID

Follow these steps:
  1. Retrieve by ID the event rule to be deleted, as shown in example 7.1
  2. If the event rule has been successfully retrieved, delete it:
    {
    	myModel.removeTWSObject(EventRule.class, eRuleRead.getId(), null);
    }
    catch (ConnException exc)
    {
    	//Do something to recover...
    }

Example 10: Delete an event rule from the database by key (name)

Follow these steps:
  1. Retrieve by key, the event rule to be deleted, as shown in example 7.2
  2. If the event rule has been successfully retrieved, delete it:
    {
    	myModel.removeTWSObject(EventRule.class, 
                                          new EventRuleKey(eventRuleName), null);
    }
    catch (ConnException exc)
    {
    	//Do something to recover...
    }