2017 June Release

CustomizationsPermanent link for this heading

For each customization point several customizations may exist, distinguished by the key parameters. Optional keys may be set to null, if the customization should apply to any value in the optional key. The customization provides the concrete implementation of a customization point.

By default customizations are implicitly stored in the default configurations of the software components the corresponding customization point belongs to. If you create your own customization points a configuration with reference DefaultConfig is implicitly generated for your software component.

Using domain typesPermanent link for this heading

If a Fabasoft Folio Domain consists of several Fabasoft Folio tenants you might want to have an own configuration for each Fabasoft Folio Tenant. This can be achieved by defining a software solution (or software edition) for each Fabasoft Folio Tenant and using the target keyword followed by the reference of the domain type.

A domain type can be customized if:

  • A configuration object is already specified in the DomainType object.
  • Only the domain type without configuration exists but it is defined in the own software component. Then a configuration will be created and the domain type extended.
  • The customization point is defined in the own software component, but the configuration object is not yet defined. Then a configuration will be created and the domain type extended.
  • The customization point is defined in a component which specifies the own software component as friend, but the configuration object is not yet defined. Then a configuration will be created and the domain type extended.

In all other cases an error will be thrown.

Example

// Define the customization for the own software solution
// Create a new configuration object
if it is not already created manually
target
DomainTypeAppducxSample {
  customize
GetAllowedAttrDef<Folder, objchildren> {
    // Assumes that outattrdef is defined as direct
    outattrdef = objsubject;
  }
}

// Define the customization for the software edition Folio
// Add an entry to an existing configuration object
in the Folio configuration
target DomainTypeFolio {
  customize GetAllowedAttrDef<Folder, objchildren> {
    outattrdef = objsubject;
  }
}

ContextsPermanent link for this heading

Some customization points support additional configuration contexts. This context is calculated dynamically by calling the action FSCCCONFIG@1.1001:SetCPContext(object cp, retval object context) on the object the customization point is called for.

Example

// Define the customization for the software edition Folio
// Add an entry to an existing configuration object
in the Folio configuration,

// additionally specifying a context

target DomainTypeFolio.Art {
  customize GetAllowedAttrDef<Folder, objchildren> {
    outattrdef = objsubject;
  }
}

target DomainTypeFolio.[Art,Business] {
  customize GetAllowedAttrDef<Folder, objchildren> {
    outattrdef = objsubject;
  }
}

Contexts can be listed in the target definition.

It is only allowed to configure the contexts, when one of the following conditions hold true:

  • the domain type configuration object belongs to the current project or
  • the customization point belongs to the current project or
  • the context object belongs to the current project

Deprecated: Using add and override of a software solution or software editionPermanent link for this heading

If a Fabasoft Folio Domain consists of several Fabasoft Folio tenants you might want to have an own configuration for each Fabasoft Folio Tenant. This can be achieved by defining a software solution (or software edition) for each Fabasoft Folio Tenant and using the target keyword followed by the reference of the software solution (or software edition) and the keyword add or override. If the keyword add is used, the customization is added to an existing configuration. If the keyword override is used, a new configuration gets generated. The configurations have to be assigned to the Fabasoft Folio Tenant manually via the Fabasoft Folio Web Client (“Domain Administration” > “Object List” > “Domain Objects”).

Cloud profile note: For EditionFolioCloud@1.1, only addition is allowed, override is forbidden for all software solutions and editions.

Example

// Implementation for Object
customize
GetObjHint<Object> {
  // Assumes that hint is not defined as direct
  // The parameter suffix is available in the expression block

  hint = expression { cooobj.objname + " " + suffix }
}

// Implementation for ContentObject
customize
GetObjHint<ContentObject> {
  // Assumes that hint is not defined as direct
  hint = expression { cooobj.objname }
}

customize GetAllowedAttrDef<Folder, objchildren> {
  // Assumes that outattrdef is defined as direct
  outattrdef = objname;
}

// Define the customization for a specific software solution
// Create a new configuration object (override)

target
SolutionPayment@1.1 override {
  customize
GetAllowedAttrDef<Folder, objchildren> {
    // Assumes that outattrdef is defined as direct
    outattrdef = objsubject;
  }
}