Annotation Interface TrackableExtension


@Retention(RUNTIME) @Target(TYPE) @Documented public @interface TrackableExtension
Add one or more TrackableBehavior features to a Trackable domain.

NOTE: if there is only a need to have basic auditing information and no additional tracking behavior, then this annotation should not be used. In that scenario, it is sufficient for the target domain to simply implement the Trackable interface.

Generally, domain that is marked with a TrackableBehavior.CATALOG is also marked with TrackableBehavior.SANDBOX, but this is not required. In the case where CATALOG is declared alone, user changes are immediately live (i.e production) and propagation is immediately launched to push changes to subordinate catalogs, where they become immediately live as well. This can be challenging for end applications that may want to conditionally accept the change. If the desire is to immediately deploy and propagate, but still allow end applications to utilize the promote/approve process for the incoming change, the ContextInfo.isIgnoreNarrowing() should be used on the original user change with a TrackableExtension extension declaration that includes TrackableBehavior.SANDBOX.

Domain can be marked with TrackableBehavior.SANDBOX alone, in which case, no catalog or application discrimination is executed or kept. This is generally the case where multitenancy features are not required.

Domain can be marked with TrackableBehavior.TENANT alone, or with some combination of others. Domain with TrackableBehavior.APPLICATION will always be implied to also be TrackableBehavior.TENANT, because an application always belongs to a tenant.

If marked with both TrackableBehavior.CATALOG and TrackableBehavior.APPLICATION, the TrackableBehavior.CATALOG behavior will generally win, unless explicit code is introduced to leverage the application discrimination.

Domain marked with TrackableBehavior.CUSTOMER_CONTEXT must NOT be also marked with TrackableBehavior.APPLICATION. The behavior of these discriminators is not compatible, as TrackableBehavior.CUSTOMER_CONTEXT itself may discriminate by one application, multiple applications, or no applications.

Author:
Jeff Fischer
  • Required Element Summary

    Required Elements
    Modifier and Type
    Required Element
    Description