Package org.eclipse.viatra.transformation.evm.api

## Class RuleBase

- java.lang.Object
- - org.eclipse.viatra.transformation.evm.api.RuleBase

- Direct Known Subclasses:
    `AdaptableRuleBase`

      public class RuleBase
      extends java.lang.Object

  An RuleBase is associated to an `EventRealm` and it is responsible for creating, managing and disposing rules in the Rule Engine. It provides an unmodifiable view for the collection of applicable activations.

- - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `protected Agenda` | `agenda` |
    `protected EventRealm` | `eventRealm` |
    `protected org.apache.log4j.Logger` | `logger` |
    `protected java.util.Map<RuleSpecification<?>,​java.util.Map<EventFilter<?>,​RuleInstance<?>>>` | `ruleInstanceTable` |

  - ### Constructor Summary

    Constructors
    Modifier | Constructor | Description
    --- | --- | ---
    `protected` | `RuleBase​(EventRealm eventRealm, Agenda agenda)` | Instantiates a new RuleBase instance with the given `EventRealm` and `Agenda`.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `ScopedConflictSet` | `createScopedConflictSet​(ConflictResolver conflictResolver, java.util.Map<RuleSpecification<?>,​java.util.Set<EventFilter<?>>> specifications)` | Creates a scoped conflict set of the enabled activations of the provided rule specifications and filters using the given conflict resolver.
    `protected void` | `dispose()` | Disposes of each rule instance managed by the agenda.
    `protected <EventAtom> RuleInstance<EventAtom>` | `findInstance​(RuleSpecification<EventAtom> specification, EventFilter<? super EventAtom> filter)` |
    `Agenda` | `getAgenda()` |
    `EventRealm` | `getEventRealm()` |
    `<EventAtom> RuleInstance<EventAtom>` | `getInstance​(RuleSpecification<EventAtom> specification, EventFilter<? super EventAtom> filter)` | Returns the filtered instance managed by the RuleBase for the given specification.
    `org.apache.log4j.Logger` | `getLogger()` |
    `java.util.Set<RuleInstance<?>>` | `getRuleInstances()` |
    `java.util.Map<RuleSpecification<?>,​java.util.Set<EventFilter<?>>>` | `getRuleSpecificationMultimap()` |
    `protected <EventAtom> RuleInstance<EventAtom>` | `instantiateRule​(RuleSpecification<EventAtom> specification, EventFilter<? super EventAtom> filter)` | Instantiates the given specification over the EventRealm of the RuleBase.
    `protected <EventAtom> boolean` | `removeRule​(RuleInstance<EventAtom> instance)` | Removes and disposes of a rule instance.
    `protected <EventAtom> boolean` | `removeRule​(RuleSpecification<EventAtom> specification, EventFilter<? super EventAtom> filter)` | Removes and disposes of a rule instance with the given specification.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### eventRealm

          protected final EventRealm eventRealm

    - #### ruleInstanceTable

          protected final java.util.Map<RuleSpecification<?>,​java.util.Map<EventFilter<?>,​RuleInstance<?>>> ruleInstanceTable

    - #### agenda

          protected final Agenda agenda

    - #### logger

          protected final org.apache.log4j.Logger logger

  - ### Constructor Detail

    - #### RuleBase

          protected RuleBase​(EventRealm eventRealm,
                             Agenda agenda)

      Instantiates a new RuleBase instance with the given `EventRealm` and `Agenda`.
      Parameters:
        `eventRealm` - the `EventRealm` instance
        `agenda` - the `Agenda` instance

  - ### Method Detail

    - #### instantiateRule

          protected <EventAtom> RuleInstance<EventAtom> instantiateRule​(RuleSpecification<EventAtom> specification,
                                                                        EventFilter<? super EventAtom> filter)

      Instantiates the given specification over the EventRealm of the RuleBase. If the specification was already instantiated, the existing instance is returned.
      Parameters:
        `specification` - the rule to be instantiated
      Returns:
        the created or existing rule instance

    - #### removeRule

          protected <EventAtom> boolean removeRule​(RuleInstance<EventAtom> instance)

      Removes and disposes of a rule instance.
      Parameters:
        `instance` -
      Returns:
        true, if the instance was part of the RuleBase

    - #### removeRule

          protected <EventAtom> boolean removeRule​(RuleSpecification<EventAtom> specification,
                                                   EventFilter<? super EventAtom> filter)

      Removes and disposes of a rule instance with the given specification.
      Parameters:
        `specification` -
        `filter` - the partial match used as filter
      Returns:
        true, if the specification had an instance in the RuleBase

    - #### dispose

          protected void dispose()

      Disposes of each rule instance managed by the agenda.

    - #### getEventRealm

          public EventRealm getEventRealm()

    - #### getRuleSpecificationMultimap

          public java.util.Map<RuleSpecification<?>,​java.util.Set<EventFilter<?>>> getRuleSpecificationMultimap()

      Since:
        2.0

    - #### getRuleInstances

          public java.util.Set<RuleInstance<?>> getRuleInstances()

      Returns:
        an immutable copy of the set of rule instances

    - #### getInstance

          public <EventAtom> RuleInstance<EventAtom> getInstance​(RuleSpecification<EventAtom> specification,
                                                                 EventFilter<? super EventAtom> filter)

      Returns the filtered instance managed by the RuleBase for the given specification.
      Parameters:
        `specification` -
        `filter` - the partial match to be used as filter
      Returns:
        the instance, if it exists, null otherwise

    - #### findInstance

          protected <EventAtom> RuleInstance<EventAtom> findInstance​(RuleSpecification<EventAtom> specification,
                                                                     EventFilter<? super EventAtom> filter)

    - #### createScopedConflictSet

          public ScopedConflictSet createScopedConflictSet​(ConflictResolver conflictResolver,
                                                           java.util.Map<RuleSpecification<?>,​java.util.Set<EventFilter<?>>> specifications)

      Creates a scoped conflict set of the enabled activations of the provided rule specifications and filters using the given conflict resolver. The set will be incrementally updated until disposed.
      Parameters:
        `conflictResolver` -
        `specifications` -
      Since:
        2.0

    - #### getAgenda

          public Agenda getAgenda()

    - #### getLogger

          public org.apache.log4j.Logger getLogger()