Customizations

  • The processors can be customized to suit the needs of the destination.

  • The customizations can include

    • Customize a use case processor

    • Change in payload structure.

    • Combining / chaining two or more processors.

Customizing a use case processor

All the OOTB processors for use cases are based on the common base processor AsyncBaseProcessor OR SynchronousBaseProcessor.

SynchronousBaseProcessor is responsible to execute multiple processors in given sequence.

Any processor can extend the base processor AsyncBaseProcessor OR SynchronousBaseProcessor and provide a custom implementation of the methods mentioned in the below table.

Customization

Method(s)

Description

1. Description of the job

constructor()

Information about the job.

2. Authentication

authenticate()

Authentication to be used for connecting to the destination.

3. Token

fetchToken()

Token to be used for connecting to the destination.

4. Create Payload

createPayload(props)

The payload to be send to the destination. The props argument can be a map with key, value pairs.

5. Destination

fetchDestination()

Details of the destination.

6. Send Payload

sendPayload()

Send the payload to the destination.

7. On Success

onSuccess()

Operations to be carried out on the success of a job.

8. On Failure

onFailure()

Operations to be carried out on the failure of a job.

If the processor does not extend the base processor AsyncBaseProcessor OR SynchronousBaseProcessor , then the processor is responsible to carry out all the operations mentioned in the above table, in the order they are needed.

Customizing BaseProcessor


  • The logic of data generation, connection and delivery of payload to the destination lies in the processor.

  • Below is the example of the structure of a customized processor.


//@include:technia/d365/processor/CustomProcessor

const configurationProperties = {
"config1": "ABC",
"config2": "000001234"
};

new CustomProcessor().execute(configurationProperties);
//@include:technia/common/processor/BaseProcessor

class CustomProcessor extends BaseProcessor {

    constructor() {
        super();
    }

    fetchToken() {
	    // Create the destination handler to fetch the token if required.
    }

    generatePayload(configurationProperties) {
	    // Implement how to fetch the required details from ObjectId and generate the destination supported payload.
    }

    createPayload(configProps) {
        // Call generate payload and set the payload with destination handler.
    }

    fetchDestination() {
	    // Implement and fetch destinaiton details from environment variable or configuration properties.
    }

    sendPayload() {
        // Call send method of destination handler.
    }

    onSuccess() {
        // Process the response if the operation is success.
    }

    onFailure() {
        // Process the response if the operation is failure.
    }
}

Customizing Payload

  • The logic of data generation lies in the generatePayload() method of the processor.

    • generatePayload() method can either be rewritten or can be called for base structure of the payload.

    • Below is the example of modifying the value of a specific key in the payload.

//@include:technia/d365/processor/CustomProcessor

const configurationProperties = {
"config1": "ABC",
"config2": "000001234"
};

new CustomProcessor().execute(configurationProperties);
//@include:technia/common/processor/ExistingProcessor

class CustomProcessor extends ExistingProcessor {

    createPayload(configProps) {
        const payload = this.generatePayload(configProps);
        payload.ReasonForChangeText = "New Batch - 2023";  // Change a particular value of payload
        const payloadAsString = JSON.stringify(payload);
        context.result().data(payloadAsString, 'application/json', 'payload.json');
    }

}