How to validate MDM data records against the master storage through the REST API
Before saved to the master database, a data record has to go through a validation process, which involves checking the data record against the database schema, foreign key constraints, validation rules and the Before-Saving process (if any) defined in the entity that the data record pertains to.
This article applies to Talend products with MDM 6.2.0 and above.
Validate data records
- containerName: This is a String value which specifies the name of the data container against which you want to validate data record(s).
- containerType: This is a String value which represents the type of the data container. It is either ‘MASTER’ (default) or ‘STAGING’.
- returnSource: This is a Boolean value which indicates whether to include the sent records within the response. By default, it is false.
- beforeSaving: This is a Boolean value which indicates whether to bypass the beforeSaving process associated with the record(s) during validation. By default, it is true. The data validation operation should be an immutable action, and thus you are allowed to disable the check against the beforeSaving process which in some cases may modify the data.
An XML representation of the new data record you want to use to replace the existing one.
The id element(s) in the request body determine which record is to be updated.
- Content-Type: application/xml
- Authorization: Basic Authentication scheme
- Accept: application/xml or application/json. The Accept header tells the server to return either JSON or XML content. By default, the result is returned in JSON format.
A list of the validation results for each record (either in XML or in JSON format) containing the validity status, a message that can be empty or the reason why the data record is invalid, and optionally the sent record(s) as an echo.
<results> <result> <isValid>true</isValid> <message></message> <sourceXml> <ProductFamily> <Id>1</Id> <Name>Literature</Name> <ChangeStatus>Approved</ChangeStatus> </ProductFamily> </sourceXml> </result> <result> <isValid>false</isValid> <message>[Error] :-1:-1: cvc-enumeration-valid: Value 'Unknown' is not facet-valid with respect to enumeration '[Pending Rejected Approved]'. It must be a value from the enumeration. [Error] :-1:-1: cvc-type.3.1.3: The value 'Unknown' of element 'ChangeStatus' is not valid. </message> <sourceXml> <ProductFamily> <Id>2</Id> <Name>Comics</Name> <ChangeStatus>Unknown</ChangeStatus> </ProductFamily> </sourceXml> </result> </results>
200 - If the validation operation is executed successfully, this status code is returned whatever the result(s) of the validation.
How to validate a data record through the REST API using a Job
The following example shows how to use a Talend Job to validate a data record through the REST API and print out the response message accordingly.
The Job is composed of two components: tREST and tJavaRow:
- tREST is used to send the HTTP request and get the response correspondingly.
- tJavaRow is used to print out the response.
Retrieve the Job file tREST.zip from the Downloads tab in the left panel of this page.
Before you begin
- The MDM server is up and running.
- You have already launched Talend Studio.
- You have already imported the MDM Demo Project.
- From the Palette, drop two components tREST and tRESTon the workspace.
Connect tREST to tREST using a
- Double-click tREST to open its Basic settings tab.
In the URL field, enter the URL to access the MDM REST
In this example, it is
- From the HTTP Method list, select POST.
Click the [+] button to add two lines in the
HTTP Headers area to describe the content type of the
HTTP request and specify the authorization information.
In this example, provide the following name/value pairs:
In the HTTP Body area, enter the data record you want to validate against the
master storage in XML format.
In this example, the <root> element is used to enclose the data record.
- Double-click tJavaRow to open its Basic settings tab.
In the Code area, enter your customized code.
System.out.println("\n##### An invalid record example #####\n"); System.out.println(restResponse_tREST_1);
Save and execute the Job.
Since no Accept header is specified, the response returns the JSON content. The response shows that the data record is not valid and gives a message about why the data record did not pass the validation.