Tag Archives: validation

Quick look at the mediator component


What is Oracle Mediator Component?

Mediator is the load balancer which can route, filter, validate and transform data from the service providers to external references

  • Route: determines the service component to which the message has to be sent
  • Validate: validate the incoming payload information
  • Filter: Filters the payload for specific information before routing it to the specific component
  • Transformation: Transforms data from one xsd format to another using XSL Mapper

the code specific to mediator in the composite.xml will be like

<component name="ConversionMediator">
<implementation.mediator src="ConversionMediator.mplan"/>
</component>

Mediator component in the design view consist of

Name: Name of the mediator component

WSDL Url: the service provider URL

Port Type: The port on which the request message is sent

Resequence Level: Whether the sequencing of the incoming message will be taken care commonly[Operation] or for each component [component]

Priority: priority set for parallel routing rule

validate XSD: validate the schema for the incoming message

Callouts: specifies java classes for extra logic in programmatic way

Resequence:

Standard -> the incoming message will be sequence based on the sequence id

Best Effort -> sequencing based on the best possible way

FIFO ->  sequencing of message based on the time of the arrival of the message

Static Routing:

routing rule based on static information

Filter -> content based or header based routing

Transform -> using xsl mapper file

validate -> using schematron file

Assign -> assign header,payload values of the message from source to target

sequential -> rule executed one after the other

Parallel -> rule executed in parallel. Priorities are given to the parallel rule

Dynamic Routing:

routing rule based on external rule which keeps changing based on the invocation context

Fault Handling: This is handled in composite or at the component[mediator] level by specifying fault policies

Event Handling: A mediator can subscribe or publish an event

JBO-27024: Failed to validate a row with key oracle.jbo.Key


How to defer the mandatory constraint?

The mandatory validation is a database constraint and you do not have any control over it in ADF. You will not have the validation execution tab for these kind of DB constraint validation if you want to defer it based on some condition.But the Error message can be overridden.

if you want to populate the key attribute for the child from the parent then enable “Composite Association -> Cascade Update Key Attributes” for the association

JBO-27024: Failed to validate a row with key oracle.jbo.Key usually occurs

1. Not providing value for a mandatory attribute.
2. Incorrect value for an attribute of different data type
3. any of your other validation rules failed.

the validation is failing because the id attribute may not be getting created properly. Because of this it could not validate the row as the id is null. row.validateEntity() will help to identify the error by calling it when you commit the record and check where exactly the error pops up.

4. when the primary key is not based on a sequence and depends on the composite. The solution is to create a surrogate key. If you want to override the db constraint you must have a surrogate key populated programmatic way every time a new row is created. So that the data is unique all the time and proceed with a customized error message for each attribute, make the surrogate key hidden and read only.

if you want to suppress the validation then use skipValidation=true in pageDef or have the immediate set to true.