Work with System-Generated Objects

A system-generated object is unlike the other types: Rather than select it for a model, you create filters that define it. The object doesn't exist outside of the model that defines it (or a control deployed from that model).

Specifically, if a filter uses the Equals condition to set an attribute equal to itself, or if a filter uses the Similar or Similar to condition, it returns records sorted into groups. These records may then be used in subsequent filters as if they were a business object.

Naming

As you create any filter, you give it a name. The name of the filter that defines a system-generated object serves also as the name of the object itself, as you select it in a subsequent filter. For example, a filter may set the Invoice ID attribute of the Payables Invoice business object equal to itself. It would return an object that groups records by invoice. You may name the filter Invoice ID is the same, and that would also serve as the name of the system-generated object.

You may create more than one of these filters, citing distinct attributes of a single business object. Typically, you'd create one after another, so that they produce one object with records sorted into multidimensional groups. In that case, the name of the system-generated object is the name of the last of the filters that define the object.

For example, one filter may set the Invoice ID attribute of the Payables Invoice business object equal to itself, and a second filter may set the Amount attribute equal to itself. In the resulting object, each group would contain records with the same invoice ID and amount. If the second filter were named Invoice Amount is the same, that would also be the name of the system-generated object defined by the two filters.

Use Cases

When a filter produces a system-generated object, a subsequent filter can apply a function to each group defined by the object.

In another common usage, one filter applies the Equals condition to create a system-generated object. A second filter applies the Does not equal condition to identify discrepancies within each group created by the system-generated object. For example:

  • A filter states that the Invoice ID attribute of the Payables Invoice business object equals itself. The filter, and therefore its object, are named Invoice ID is the same. The object contains sets of records; in each set, all records have the same invoice ID.

  • A second filter states that the Supplier ID attribute of the Invoice ID is the same object doesn't equal itself. This identifies distinct suppliers in each set. The overall result is records of distinct suppliers who have been issued duplicate invoice IDs.

The filter that creates the system-generated object may use the Similar or Similar to condition. If so, the filter that identifies discrepancies within groups would use the Different than condition.

Limitations

A filter can state that an attribute of an object doesn't equal itself only if that attribute belongs to a system-generated object, and not if it belongs to any other type of business object.

Similarly, for a filter to state that an attribute of an object differs from itself, the attribute must belong to a system-generated object created by a Similar or Similar to filter. If an attribute belongs to any other type of business object, a filter can't state that it differs from itself.

Once you create a filter that calls a system-generated object, the filter that creates the system-generated object is locked. It displays an icon that looks like a padlock, and if you hover over the icon, the word "Dependency" appears. You can edit the filter that creates the system-generated object only if you first delete its dependent filters. To locate them, click the padlock icon; all dependent filters are highlighted. To remove the highlighting, right-click and then select a Clear Highlight option.

Parent and Child Sets

Filters can generate parent and child sets of records with a common attribute. A model matches values in the two sets to determine which sets to include among results. For example:

  • Create filters that use the Payables Invoice business object: the Invoice ID attribute equals itself, and the Amount attribute equals itself. The result is an object that contains groups of invoices; in each, all invoices have the same ID and same amount.

  • Create a filter specifying that the Supplier ID of that system-generated object doesn't equal itself. The result is parent sets of invoices. In each, invoice ID and amount are the same, but at least one supplier ID differs from the others. (If all supplier IDs are the same within a set, it's discarded.)

  • Create a fourth filter: equate the Taxpayer ID attribute of the Supplier business object with itself. Its result is a new, child set of sets. In each set, the taxpayer ID is the same for all records, but it may correlate to any number of supplier IDs. The model would compare parent and child sets, and keep only those parent sets with matching Supplier ID values.