Effector 6.3 developer manual

XML reference 6.3

Effector Studio 6.3 summary

Effector Studio 6.3 manual

Effector 6.2 developer manual

XML reference 6.0

Effector Studio 3.2 summary

Effector Studio 3.2 manual

BusinessObject

In the system, a business object can represent a data table or handle database views, it takes part in defining workflows or describes further database operations. The files need to be saved to the BusinessObject directory. The file name must reflect the name and subtype of the object. The tables must contain the Deleted TINYINT field needed for the system's transaction management. If we want to define a subtype to the BusinessObject, there need to be an ObjectType VARCHAR(60) column in the table.

/BusinessObject

Root element. Mandatory.

/BusinessObject/ParentBusinessObject (String)

It is optional. When the business object is derived, this is the name of the parent BusinessObject, for instance in case of BusinessObjectProjectISO: BusinesObjectProject.

/BusinessObject/DataTable (String)

It defines the table of the business object in the database. This setting is often emitted in case of derived objects (there is no supplementary data).

/BusinessObject/UniqueIDColumn (String)

A column in the table defined in the DataTable setting needed for the unique identification of the row. In case of a derived object, it generally is U_. The UniqueID column name of the derived object cannot be the same as that of the UniqueIDColumn column of the main business object. If the derived business object has no DataTable setting, this setting may also be omitted. In case of the main business object, this setting is mandatory, and the field typically is of auto-increment int type. The unique ID cannot be a complex key.

/BusinessObject/ForeignFields

It is possible to reference and save data to a field of an external (foreign) table having a 1-1 association defined in the DataTable setting. It is called foreign field. This node joins the foreign field definitions.

/BusinessObject/ForeignFields/ForeignField

This node joins the definitions of a foreign field. Within a definition, several foreign fields can be defined (if placed in the same table). The name attribute should include the name of the definition, which can be referenced in the Field setting.

/BusinessObject/ForeignFields/ForeignField/TableName (String)

The name of the table in 1:1 relationship with the original table.

/BusinessObject/ForeignFields/ForeignField/Mappings

This node joins the settings pertaining to field mapping.

/BusinessObject/ForeignFields/ForeignField/Mappings/Mapping

This node joins the settings of a mapping.

Example

<ForeignFields>
    <ForeignField name="EventPeople">
        <TableName>EventPeople</TableName>
        <Mappings>
            <Mapping> <!—no. 1 roleid is the owner -->
                <TableField>EventRoleID</TableField>
                <Value>1</Value>
            </Mapping>
            <Mapping> <!-- EventPeople.EventID = Event.EventID -->
                <TableField>EventID</TableField>
                <BusinessObjectField>EventID</BusinessObjectField>
            </Mapping>
            <Mapping> <!—the value of the EventPeople.PeopleID field is available under Owner -->
                <TableField>PeopleID</TableField>
                <BusinessObjectField>Owner</BusinessObjectField>
            </Mapping>
        </Mappings>
    </ForeignField>
</ForeignFields>

/BusinessObject/ForeignFields/ForeignField/Mappings/Mapping/TableField (String)

The name of the field in the table specified in the TableName setting.

Example

<ForeignFields>
    <ForeignField name="EventPeople">
        <TableName>EventPeople</TableName>
        <Mappings>
            <Mapping> <!-- no. 1 roleid is the owner -->
                <TableField>EventRoleID</TableField>
                <Value>1</Value>
            </Mapping>
            <Mapping> <!-- EventPeople.EventID = Event.EventID -->
                <TableField>EventID</TableField>
                <BusinessObjectField>EventID</BusinessObjectField>
            </Mapping>
            <Mapping> <!-- the value of the EventPeople.PeopleID field is available under Owner -->
                <TableField>PeopleID</TableField>
                <BusinessObjectField>Owner</BusinessObjectField>
            </Mapping>
        </Mappings>
    </ForeignField>
</ForeignFields>

/BusinessObject/ForeignFields/ForeignField/Mappings/Mapping/BusinessObjectField (String)

It is the name of the column set in the Fields section in the BusinessObject. Only one of the Value and the BusinessObjectField setting should be set.

Example

<ForeignFields>
    <ForeignField name="EventPeople">
        <TableName>EventPeople</TableName>
        <Mappings>
            <Mapping> <!-- no. 1 roleid is the owner -->
                <TableField>EventRoleID</TableField>
                <Value>1</Value>
            </Mapping>
            <Mapping> <!-- EventPeople.EventID = Event.EventID -->
                <TableField>EventID</TableField>
                <BusinessObjectField>EventID</BusinessObjectField>
            </Mapping>
            <Mapping> <!-- the value of the EventPeople.PeopleID field is available under Owner -->
                <TableField>PeopleID</TableField>
                <BusinessObjectField>Owner</BusinessObjectField>
            </Mapping>
        </Mappings>
    </ForeignField>
</ForeignFields>

/BusinessObject/ForeignFields/ForeignField/Mappings/Mapping/Value (String)

If setting a fixed value is needed to establish a 1:1 relationship, that value should be defined in this setting. Either the Value or the BusinessObjectField setting should be set. In the example, a table named EventPeople is used to store the person assigned the Owner role of the Event table. Since data can be recorded with a 1:n relationship in this table, the data of the person assigned the Owner role is identified by the value 1in the EventRoleID column. The relationship is defined by the EventID field.

Example

<ForeignFields>
    <ForeignField name="EventPeople">
        <TableName>EventPeople</TableName>
        <Mappings>
            <Mapping> <!-- no. 1 roleid is the owner -->
                <TableField>EventRoleID</TableField>
                <Value>1</Value>
            </Mapping>
            <Mapping> <!-- EventPeople.EventID = Event.EventID -->
                <TableField>EventID</TableField>
                <BusinessObjectField>EventID</BusinessObjectField>
            </Mapping>
            <Mapping> <!-- the value of the EventPeople.PeopleID field is available under Owner -->
                <TableField>PeopleID</TableField>
                <BusinessObjectField>Felelos</BusinessObjectField>
            </Mapping>
        </Mappings>
    </ForeignField>
</ForeignFields>

/BusinessObject/Fields

It is the collection tag of the business objects columns. The columns are defined in the tag.

/BusinessObject/Fields/Field

This node joins the settings of a field.

Attributes:

  • name: The name of the column in the database, it is contained by the name attribute; however, the name attribute may define a column name that physically is not in the table of the business object, rather it is featured in a different table as related data. In such a case, a 1: 1 relationship is required, and the foreignField attribute must also be employed, in which we refer to the ForeignField setting that contains the definition of the foreign field.
  • foreignField: The foreignField setting can be referenced with this (ForeignFields/ForeignField@name)
  • isDocument: Optional setting. A logical value, it defaults to false. This setting indicates whether the given field contains a document reference. The document type can be specified in the Form or Fragment XML.
  • withEncryption: Optional setting. It determines whether the value of the field is stored in an encrypted form in the database. Its value may be true \ false. The default value is false. It is applicable for VARCHAR fields only.
  • isSensitive: Optional setting. A logical value, it defaults to false. This setting indicated to Effector, that the data stored in the field is sensitive not to be passed on to the client. Such a field is editable on the client side, the modified value is saved by the system.
  • disableLogging: Optional setting. The modification of the field value is not saved by the system into the FSYS_Log. Its value can be true \ false. The default value is false.
  • requestValidatorRegExp: Optional setting. Effector validates the content of each request, so, it examines the content of fields, too. By default, Effector rejects a lot of characters. If we configure a field that also contains special characters, we need to specify the ones to be accepted as valid during validation. Its value is a regular expression.
  • requestValidatorCharacterGroup: Optional setting. Just like the requestValidatorRegExp setting, this plays a role in validating the content of the request, except here predefined groups can be selected from.

    • Anything: anything
    • AlphaNumeric: number, letter, space
    • OnlyAlpha: letter only
    • OnlyNumber: number only
    • OnlyWhiteSpace: space
    • OnlySpecialCharacters1: 1st group of special characters +-/* etc.
    • AlphaNumericWithSpecialCharacters1: Alpha numeric + specialcharacters1 group, default value

/BusinessObject/Fields/Field/DefaultValue (RuleValueType)

Optional node. It defines the default value of the field when a new object is created. It is a RuleValueType rule (please refer to Rules.)

/BusinessObject/Triggers

Optional nod. It joins the triggers needed for workflow transitions. NOTE! These do not run due to ad hoc events. Ad hoc events are all event types that do not take part in the workflow.

/BusinessObject/Triggers/Trigger

Triggers control workflow steps and define the action or outcome prompted by an event in the business object. Triggers may also define the business objects the changes of which prompt the generation of the given business object. For instance, if an event is set to ready, that can trigger the generation of a new workflow step or the configuration of a different process step, or the execution of an arbitrary SQL statement.

Attributes:

  • sourceBusinessObject: The business object that will activate the trigger. (main BusinessObject)
  • sourceObjectType: The subtype of the business object. The BusinessObject and its subtype define the triggering object. (For example: sourceBusinessObject: Event, sourceObjectType: MegrendelesBekotes, the triggering object is the BusinessObjectEventMegrendelesBekotes, that is described in the BusinessObjectEventMegrendelesBekotes.xml file).
  • workflowVersion: Optional setting, it defines the workflow version to which the trigger belongs. Rarely used setting.
  • event: The event that prompts the activation of the trigger. Its value may be Done or Created.
  • action: it defines the type of the triggered event, which may assume the following values:

    • Create: A new business object is created.
    • Modify: We want to modify a field of the object. In such a case, we may also need a ForeignKey setting.
    • RunSQL: The system will run an SQL statement, which has to be set in the SQL node. In this case, we may also need a ForeignKey setting.
  • group: If its value is other than 0, this attribute will group the triggers. This way the occurrence of an event may be subject to several triggering events. Triggers with the same group number constitute a group. Currently, this value is always 0.
  • isAttachedWorkflow: Optional attribute. In Effector we can define workflows that will continue in another parallel workflow. Its value can be true or false; the default value is false.
  • attachedWFTemplate: Optional attribute. If the value of the isAttachedWorkflow attribute is true, we need to set the type of the attached workflow in this attribute (Workflow ObjectType).
  • attachedWFVersion: Optional attribute. If the value of the isAttachedWorkflow attribute is true, we can set the version of the attached workflow in this attribute.

Example 1

<Trigger group="0" action="Create" sourceBusinessObject="Project" sourceObjectType="Test" event="Created" />

Example 2

<Trigger group="0" action="Create" sourceBusinessObject="Event" sourceObjectType="Teszt01Rogzites_Hianypotlas" event="Done" />

/BusinessObject/Triggers/Trigger/Condition (RuleValueType)

Optional node, that is used when we want to make the occurrence of the workflow step subject to certain conditions.

Example

<Trigger group="0" action="Create" sourceBusinessObject="Event" sourceObjectType="Teszt01Rogzites" event="Done">
    <Condition type="SQL" return="boolean" default="false"><![CDATA[SELECT CASE WHEN '[##Field.Hianypotlas##]' = '31' THEN 'True' ELSE 'False' END]]></Condition>
</Trigger>

/BusinessObject/Triggers/Trigger/SQL (String)

Optional node. If the attribute of the /BusinessObject/Triggers/Trigger action is RunSQL, it obtains the SQL to be run from this node. Just as with RuleValueType, here we can also use references to fields or workflow variables. The type attribute indicates whether it is a stored procedure. Its value can be Select or StoredProcedure.

/BusinessObject/Triggers/Trigger/ForeignKey (String)

Optional node. If the attribute of the /BusinessObject/Triggers/Trigger action is RunSQL or Modify, this setting should be used the specify the name of the field that connects it to the other object.

Example

<Trigger group="0" action="RunSQL" sourceBusinessObject="Event" sourceObjectType="Teszt01Rogzites" event="Done">
    <SQL type="StoredProcedure">osp_wrk_aggregate_order_value '[##Field.OrderID##]'</SQL>
    <ForeignKey>ProjectID</ForeignKey>
</Trigger>

/BusinessObject/Triggers/Trigger/SetValues

Optional node. If the attribute of the /BusinessObject/Triggers/Trigger action is Modify, in this node we need to list the properties of the business objects to be modified and to what. This tag is a complex element.

/BusinessObject/Triggers/Trigger/SetValues/SetValue (String)

This node defines which field values are to be modified and to what. The fieldName is the name of the field defined in the BusinessObject. The example is taken from the BusinesObjectProjectTeszt business object.

Example:

<Trigger group="0" action="RunSQL" sourceBusinessObject="Event" sourceObjectType="Teszt01Rogzites" event="Done">
    <SetValues>
        <SetValue fieldName="PortfolioID">4</SetValue>
    </SetValues>
    <ForeignKey>ProjectID</ForeignKey>
</Trigger>

/BusinessObject/Methods

It is possible to render further business logics to certain operational steps of the BusinessObject, whose definitions is joined by this node. All sub-nodes are optional and only one of them can be used.

/BusinessObject/Methods/AfterCreate

Definition of a business logic that runs after a business object is created.

/BusinessObject/Methods/AfterCreate/Module (String)

Using this we can specify the parameters of the dll call that will run after the business object is created.

  • The value of the Module node is the name of the .dll file with its path. Effector replaces the string ##LocalProgramPath##] included in the path with the bin folder of the actual website, so the translated .dll file can be copied directly to the Effector program files.
  • The name of the class realizing the desired unique function should be specified in the className attribute.
  • With the action attribute, we can select the action we want to be executed within the function (it is not a systemic setting, the developers have to work out and handle them).

Example

<Methods>
    <AfterCreate>
        <Module className="orn_ReleaseTest.BOMethods" action="AfterCreateDLL">[##LocalProgramPath##]\orn_ReleaseTest.dll</Module>
    </AfterCreate>
</Methods>

/BusinessObject/Methods/AfterCreate/RunSQL (String)

Optional node. If the Module is not set, the system interprets this node. The value of the node is the SQL expression to be run following the generation of the object. In the expression, we can use the Field., Filter., Session. and Special. references (the same way as in rules). The SQL will run after the BusinessObject has been created.

Example

<Methods>
    <AfterCreate>
        <RunSQL>
            <![CDATA[
                UPDATE orn_F07 SET AfterCreate = 1 WHERE id = '[##Field.id##]' AND AfterCreate = 0
            ]]>
        </RunSQL>
    </AfterCreate>
</Methods>

/BusinessObject/Methods/AfterDelete

Optional node. It is the definition of the business logic to be run after deletion.

/BusinessObject/Methods/AfterDelete/Module (String)

With this node, we can define the parameters of the dll call to be run after deletion.

  • The value of the Module node is the name of the .dll file with its path. Effector replaces the string ##LocalProgramPath##] included in the path with the bin folder of the actual website, so the translated .dll file can be copied directly to the Effector program files.
  • The name of the class realizing the desired unique function should be specified in the className attribute.
  • With the action attribute, we can select the action we want to be executed within the function (it is not a systemic setting, the developers have to work out and handle them).

Example

<Methods>
    <AfterDelete>
        <Module className="orn_ReleaseTest.BOMethods" action="AfterDeleteDLL">[##LocalProgramPath##]\orn_ReleaseTest.dll</Module>
    </AfterDelete>
</Methods>

/BusinessObject/Methods/AfterDelete/RunSQL (String)

Optional node. If the Module is not set, the system interprets this node. The value of the node is the SQL expression to be run following the generation of the object. In the expression, we can use the Field., Filter., Session. and Special. references (the same way as in rules). The SQL will run after the BusinessObject has been created.

Example

<Methods>
    <AfterDelete>
        <RunSQL>
            <![CDATA[
                UPDATE orn_F07 SET AfterDelete = 1 WHERE id = '[##Field.id##]' AND AfterDelete = 0
            ]]>
        </RunSQL>
    </AfterDelete>
</Methods>

/BusinessObject/Methods/AfterLoad

Optional node containing the definition of the business logic to be run after loading.

/BusinessObject/Methods/AfterLoad/Module (String)

With this node, we can define the parameters of the dll call to be run after loading.

  • The value of the Module node is the name of the .dll file with its path. Effector replaces the string ##LocalProgramPath##] included in the path with the bin folder of the actual website, so the translated .dll file can be copied directly to the Effector program files.
  • The name of the class realizing the desired unique function should be specified in the className attribute.
  • With the action attribute, we can select the action we want to be executed within the function (it is not a systemic setting, the developers have to work out and handle them).

Example

<Methods>
    <AfterLoad>
        <Module className="orn_ReleaseTest.BOMethods" action="AfterLoadDLL">[##LocalProgramPath##]\orn_ReleaseTest.dll</Module>
    </AfterLoad>
</Methods>

/BusinessObject/Methods/AfterLoad/RunSQL (String)

Optional node. If the Module is not set, the system interprets this node. The value of the node is the SQL expression to be run following the generation of the object. In the expression, we can use the Field., Filter., Session. and Special. references (the same way as in rules). The SQL will run after the BusinessObject has been created.

Example

<Methods>
    <AfterLoad>
        <RunSQL>
            <![CDATA[
                UPDATE orn_F07 SET AfterLoad = 1 WHERE id = '[##Field.id##]' AND AfterLoad = 0
            ]]>
        </RunSQL>
    </AfterLoad>
</Methods>

/BusinessObject/Methods/AfterSave

Optional node containing the definition of the business logic to be run after saving.

/BusinessObject/Methods/AfterSave/Module (String)

With this node, we can define the parameters of the dll call to be run after saving.

  • The value of the Module node is the name of the .dll file with its path. Effector replaces the string ##LocalProgramPath##] included in the path with the bin folder of the actual website, so the translated .dll file can be copied directly to the Effector program files.
  • The name of the class realizing the desired unique function should be specified in the className attribute.
  • With the action attribute, we can select the action we want to be executed within the function (it is not a systemic setting, the developers have to work out and handle them).

Example

<Methods>
    <AfterSave>
        <Module className="orn_ReleaseTest.BOMethods" action="AfterSaveDLL">[##LocalProgramPath##]\orn_ReleaseTest.dll</Module>
    </AfterSave>
</Methods>

/BusinessObject/Methods/AfterSave/RunSQL (String)

Optional node. If the Module is not set, the system interprets this node. The value of the node is the SQL expression to be run following the generation of the object. In the expression, we can use the Field., Filter., Session. and Special. references (the same way as in rules). The SQL will run after the BusinessObject has been created.

Example

<Methods>
    <AfterSave>
        <RunSQL>
            <![CDATA[
                UPDATE orn_F07 SET AfterSave = 1 WHERE id = '[##Field.id##]' AND AfterSave = 0
            ]]>
        </RunSQL>
    </AfterSave>
</Methods>

/BusinessObject/Methods/BeforeSave

Optional node containing the definition of the business logic to be run before saving.

/BusinessObject/Methods/BeforeSave/Module (String)

With this node, we can define the parameters of the dll call to be run before saving.

  • The value of the Module node is the name of the .dll file with its path. Effector replaces the string ##LocalProgramPath##] included in the path with the bin folder of the actual website, so the translated .dll file can be copied directly to the Effector program files.
  • The name of the class realizing the desired unique function should be specified in the className attribute.
  • With the action attribute, we can select the action we want to be executed within the function (it is not a systemic setting, the developers have to work out and handle them).

Example

<Methods>
    <BeforeSave>
        <Module className="orn_ReleaseTest.BOMethods" action="BeforeSaveDLL">[##LocalProgramPath##]\orn_ReleaseTest.dll</Module>
    </BeforeSave>
</Methods>

/BusinessObject/Methods/BeforeSave/RunSQL (String)

Optional node. If the Module is not set, the system interprets this node. The value of the node is the SQL expression to be run following the generation of the object. In the expression, we can use the Field., Filter., Session. and Special. references (the same way as in rules). The SQL will run after the BusinessObject has been created.

Example

<Methods>
    <BeforeSave>
        <RunSQL>
            <![CDATA[
                UPDATE orn_F07 SET BeforeSave = 1 WHERE id = '[##Field.id##]' AND BeforeSave = 0
            ]]>
        </RunSQL>
    </BeforeSave>
</Methods>

/BusinessObject/Methods/OnValidate (RuleValueType)

Optional node.Using this, we can run a validation before saving. This is a RuleValueType, on which further information can be found in the Rules section. If the return value is boolean, in case of a false value the system does not allow saving the BusinessObject and it will display the message defined in the message attribute. If the return value is string, and the string returned by the rule is not empty, the system blocks saving and displays the returned text on the interface.

Example

<Methods>
    <OnValidate type="SQL" return="string" default="">
    <![CDATA[
        IF CAST('[##Field.Keszultseg##]' AS INT) < 1 OR CAST('[##Field.Keszultseg##]' AS INT) > 100 BEGIN
            SELECT 'Select a value between 1 and 100!'
        END]]>
    </OnValidate>
</Methods>

/BusinessObject/Rights

This node is optional. In the system, four basic rights can be defined for a BusinessObject, which definitions are joined by this node.

/BusinessObject/Rights/Create (RuleValueType)

The rule run before the generation of the BusinessObject. If the evaluation of the rule results in a false value, the system blocks the creation of the business object.

/BusinessObject/Rights/Delete (RuleValueType)

The rule run before the BusinessObject is deleted. If the evaluation of the rule results in a false value, the system blocks the deletion of the business object.

/BusinessObject/Rights/Modify (RuleValueType)

The rule run before the BusinessObject is modified. If the evaluation of the rule results in a false value, the system blocks the modification of the business object.

/BusinessObject/Rights/View (RuleValueType)

The rule run before the BusinessObject is loaded. If the evaluation of the rule results in a false value, the system blocks the loading of the business object.

Example

<Rights>
    <Create type="SQL" return="boolean" default="false">
        SELECT CASE WHEN ([dbo].[ofn_GetVisibilityRights]([##Session.UserID##],0,'[##Field.JelentesID##]','JelenetesBo') = 1) THEN `true` ELSE `false` END
    </Create>
    <Delete type="SQL" return="boolean" default="false">
        SELECT CASE WHEN ([dbo].[ofn_GetVisibilityRights]([##Session.UserID##],0,'[##Field.JelentesID##]','JelenetesBo') = 1) THEN `true` ELSE `false` END
    </Delete>
    <Modify type="SQL" return="boolean" default="false">
        SELECT CASE WHEN ([dbo].[ofn_GetVisibilityRights]([##Session.UserID##],0,'[##Field.JelentesID##]','JelenetesBo') = 1) THEN `true` ELSE `false` END
    </Modify>
    <View type="SQL" return="boolean" default="false">
        SELECT CASE WHEN ([dbo].[ofn_GetVisibilityRights]([##Session.UserID##],0,'[##Field.JelentesID##]','JelenetesBo') IS NOT NULL) THEN `true` ELSE `false` END
    </View>
</Rights>

Example for a complete xml configuration

Example

<?xml version="1.0" encoding="iso-8859-2"?> <BusinessObject xmlns="http://effector.hu/schema/ns/BusinessObject"> <Caption /> <ParentBusinessObject></ParentBusinessObject> <DataTable></DataTable> <UniqueIDColumn></UniqueIDColumn> <ForeignFields> <ForeignField name=""> <TableName></TableName> <Mappings> <Mapping> <TableField></TableField> <BusinessObjectField></BusinessObjectField> </Mapping> <Mapping> <TableField></TableField> <BusinessObjectField></BusinessObjectField> </Mapping> <Mapping> <TableField></TableField> <Value></Value> </Mapping> </Mappings> </ForeignField> </ForeignFields> <Fields> <Field name=""> <DefaultValue type="" return="" default=""> </Field> <Field name="" foreignField=""> <DefaultValue type="" return="" default=""> </Field> <Field name="" disableLogging=""> <DefaultValue type="" return="" default=""> </Field> <Field name="" isDocument=""> <DefaultValue type="" return="" default=""> </Field> <Field name="" requestValidatorRegExp=""> <DefaultValue type="" return="" default=""> </Field> <Field name="" requestValidatorCharacterGroup=""> <DefaultValue type="" return="" default=""> </Field> <Field name="" withEncryption="true"> <DefaultValue type="" return="" default=""> </Field> <Field name="" isSensitive="true"> <DefaultValue type="" return="" default=""> </Field> </Fields> <Triggers> <Trigger action="Create" event="" sourceBusinessObject="" sourceObjectType="" workflowVersion="" group=""> <Condition type="" return="" default=""></Condition> </Trigger> <Trigger action="Modify" event="" sourceBusinessObject="" workflowVersion=""> <ForeignKey></ForeignKey> <SetValues> <SetValue fieldName=""></SetValue> </SetValues> </Trigger> <Trigger action="RunSQL" event="" sourceBusinessObject="" sourceObjectType=""> <ForeignKey></ForeignKey> <SQL type=""></SQL> </Trigger> </Triggers> <Rights> <Modify type="" return="" default=""></Modify> <Create type="" return="" default=""></Create> <Delete type="" return="" default=""></Delete> <View type="" return="" default=""></View> </Rights> <Methods> <OnValidate type="" return="" default=""></OnValidate> <BeforeSave> <Module className="" action=""></Module> <RunSQL></RunSQL> </BeforeSave> <AfterSave> <Module className="" action=""></Module> <RunSQL></RunSQL> </AfterSave> <AfterDelete> <Module className="" action=""></Module> <RunSQL></RunSQL> </AfterDelete> <AfterCreate> <Module className="" action=""></Module> <RunSQL></RunSQL> </AfterCreate> <AfterLoad> <Module className="" action=""></Module> <RunSQL></RunSQL> </AfterLoad> </Methods> </BusinessObject>

  • Last update: 20 weeks 3 days ago
  • Effector