| # Transformation script Transformation scripts are used to change the contents or the structure of the event before writing it to the XML file. In some cases, events may have to be transformed to meet the receiver's need. You can for example remove attributes that are used to check a condition but should not be included in the final output. Or you can rename standard events ('create', 'change' or 'delete') to a specific event (such as 'orderedQuantityIncreased'). If required, you can even build a completely new XML structure based on the data from the event. In the transformation script, use the functions from the datrgevent library to read data from the event. To create a transformation script: Run the Transform. Script... command in the Configure XML File Action (datrg1225m000) session. The text editor is started. Enter the Baan C code for the script. TEMPLATE Use the following code as a template for each transformation script:
    function extern long transform.event(ref long io.event)
    | IMPORTANT: do not change the interface (function name, parameter,
    | and return value)
    {
    DLLUSAGE
    Desc            This function transforms a trigger event.
    Input           io.event: event
    Output          return value: 0 (OK) or < 0 (an error value)
                    io.event: transformed event
    Precondition:   i.event contains an event that is formatted according
                    to library datrgevent and must be read using that
                    library.
    Postcondition:  o.event is filled and contains an XML structure that
                    either is or is not according to library datrgevent.
    ENDDLLUSAGE

            | < Add implementation here > |

            return(0) | OK
    }
EXAMPLE See the code below for an example of a transformation script:
    | The following transformation changes the standard events 'create',
    | 'change' and 'delete to a specific event 'takeAction'. Additionally,
    | it removes the 'old values', and in case of 'delete' it moves the
    | contents to the (new) values.

    #define ERROR_IF(condition, return.value)
    ^  if condition then
    ^       return(return.value)
    ^  endif

    string  event.type(LEN_TYPE)    | event type from event
    long    retl                    | return value to be checked

    retl = datrgevent.get.event.type(io.event, event.type)
    ERROR_IF(retl <> 0, -2)
    on case event.type
    case "delete":
            retl = move.old.values.to.new.values(io.event)
            ERROR_IF(retl <> 0, -3)
            break
    case "change":
            | delete old values
            retl = remove.old.values(io.event)
            ERROR_IF(retl <> 0, -4)
            break
    default:
            | no action for "create" except setting event type
    endcase
    retl = datrgevent.set.event.type(io.event, "takeAction")
    ERROR_IF(retl <> 0, -5)
Note Details on the implementation of the move/remove functions are not included in this example. |