Adding a new transaction

When adding a new transaction to the HIM there are 2 places where you need to make your changes. The first in in the transactionrouter component. This component is responsible for routing transactions to the correct part of the mediation component for that transaction. The second place you need to change is the mediation component. This component contain all the transformations and orchestrations that are needed to make the transactions work. So, you will need to add additional transformations and orchestration for the new transaction.

Step-by-step guide to adding a new service

We are going to build a transaction to add a simple greetme service to the HIM. This service will take in the following XML:

<?xml version="1.0" encoding="UTF-8"?>
<person>
    <identifer>
        <id>321654654944616816834</id>
        <type>ECID</type>
    </identifer>
    <names>
        <givenName>Ryan</givenName>
        <familyName>Crichton</familyName>
    </names>
</person>

and returns the following output:

<?xml version="1.0" encoding="UTF-8"?>
<greeting>Hello Ryan Crichton, thanks for the ECID. Congratulations on adding a new service to the HIM!</greeting>

This service requires an ECID as identifier type to work and it will throw an error if you send it anything other than that!

We are going to extend the HIM to handle communications to and from this service as well as perform some normalization and orchestration where needed. Let imagine that the clients of this service can only export data in the following format:

<?xml version="1.0" encoding="UTF-8"?>
<person>
    <id>123456789</id>
    <idType>NID</idType>
    <givenName>Ryan</givenName>
    <familyName>Crichton</familyName>
</person>

Note that the XML structure is completely different and it contain an NID identifier instead of on ECID! Don't worry, we will use the HIM to sort that out.

Editing the transaction router

TODO

Creating the mediation components

TODO

1. Normalization

TODO

2. Orchestration

TODO

3. De-normalization

TODO