Table of Contents

Includes object in production

XL rules can include a production statement, in which some Node and Edges are created (and possibly added - depends on the rule).

The production statement is managed by a Producer object. By default, RGG files use a RGGProducer.

RGG producer

By default, all java objects that extends Node can be added in a production statement. As module in RGG are extending Node by default, they can be added in production.

Java objects that do not extend Node, can still be added in a production statement, but they will be wrapped in a ObjectNode object.

It is possible to provide a specific way to add a java object in the graph in a production statement using either: toNode() method, or by implementing the ProducingNode interface.

toNode method

The RGGProducer is testing if a java object that do not extend Node have a

public Node toNode() { // return a Node }

method.

If it is the case it uses that method to create the Node to be added in the graph. The Node can have edges toward other Nodes (in the graph or not). Additional nodes will be set persistent.

ProducingNode interface

The toNode() method works well but requires a class. When working on bigger projects you might want to create interfaces that includes the knowledge that all implementation classes should have a “toNode()” method. Such classes or interface should implements/ extends ProducingNode. Then, instead of using “toNode()”, which is taken, the classes needs to implements

public Node produceNode() { //return a Node }