Data model

Table message

Table for storing asynchronous messages:

Attribute

Type

NULL

Description

Value description

msg_id

number

No

Unique identifier, primary key.

Automatically generated.

msg_timestamp

datetime

No

Message timestamp, generated by source system.

This timestamp determines processing order of messages.

Source system, part of TraceHeader

TraceHeaderProcessor.TRACE_HEADER

receive_timestamp

datetime

No

Timestamp when message arrives to integration platform, generated by OpenHub.

Automatically generated when input request arrives.

service_name

string

No

Service name, e.g. customer

Implements org.openhubframework.openhub.core.entity.ServiceExtEnum interface

Source system

AsynchConstants.SERVICE_HEADER

operation_name

string

No

Operation name, e.g. createCustomer

Source system

AsynchConstants.OPERATION_HEADER

object_id

string

Yes

Object ID that is impacted by processing of this message. For example when this message updates customer object then it can be customer ID.

This values serves for searching messages which impact identical object. When there are two messages in processing queue, both want to change identical object, then first message will be skipped and second one will be processed.

AsynchConstants.OBJECT_ID_HEADER
entity_typestring (enum)Yes

Entity type (implements org.openhubframework.openhub.api.entity.EntityTypeExtEnum interface).

In general it's enough to detect identical changed data by objectId and operation name but there are few different operations which can change the same data (e.g. setCustomer, setCustomerExt).
If defined then it will be used for "obsolete operation call" detection instead of operation name.

AsynchConstants.ENTITY_TYPE_HEADER

correlation_id

string

No

ID generated by source system that is important for pairing request and asynchronous response in source system.

Combination correlation_id and source_system is unique.

Source system, part of TraceHeader

TraceHeaderProcessor.TRACE_HEADER

process_idstringYes

Process identifier serves for pairing messages of same process.

Source system, part of TraceHeader

TraceHeaderProcessor.TRACE_HEADER

payload

string (XML)

No

Message payload

 
envelopestring (XML)No

The whole input request, e.g. SOAP envelope including headers and body

 

source_system

string (enum)

No

Source system (implements org.openhubframework.openhub.core.entity.ExternalSystemExtEnum interface)

Source system, part of TraceHeader (applicationID)

TraceHeaderProcessor.TRACE_HEADER

state

string (enum)

No

Message state (enum value:

  • NEW: new saved message
  • IN_QUEUE: message is in SEDA queue and waiting for free thread for processing
  • PROCESSING: message is being processed
  • OK: successfully processed message
  • PARTLY_FAILED: last processing ended with error, there will be next try
  • FAILED: finally failed message, no next processing
  • WAITING: parent message that waits for child messages
  • WAITING_FOR_RES: message that waits for confirmation/response from external system
  • CANCEL: message was canceled by external system or by administrator. This state isn't set by this application.
  • POSTPONED: message is postponed because there was another message that was processed at the same time with same funnel values.

 

failed_count

number

No

Count of unsuccessful tries. Default value is 0.

 

failed_error_code

string

Yes

Error code when message processing failed (implements org.openhubframework.openhub.core.common.exceptions.ErrorExtEnum interface)

 

failed_desc

string

Yes

Error description when message processing failed.

 

last_process_timestamp

datetime

Yes

Timestamp when this message was lasttime updated.

 
start_in_queue_timestampdatetimeYesTimestamp when this message was lasttime changed to state IN_QUEUE.
custom_datastringYes

Field for saving custom data, suitable for sharing information between more tries of processing.

 
parent_msg_idnumberYes

Reference to parent message (parent-child binding).

Useful for parent-child binding, ChildMessage#createMessage

parent_binding_type

string

(SOFT)

Yes

Binding type defines how tightly child message does influence parent message:

  • HARD: result of child message influences result of parent message (for example when child message ends in FAILED state then parent message will in FAILED state too)
  • SOFT: result of child message has no effect to parent message

Useful for parent-child binding only, see asynch-child component.

Useful for parent-child binding, ChildMessage#createMessage
funnel_valuestringYes

Funnel value is for finding out if two or more concurrent messages impact identical target object. Funnel value can be anything, e.g. customer ID, subscriber mobile number, custom string etc.

This value is for msg-funnel component use.

What is difference between object_id and funnel_value? Object_id represents real object identifier and serves for analysis if any message should be skipped because message data are obsolete. On the other hand funnel value represents virtual value (it can be anything) and is used to ensure that there will be only one message with funnel value at the moment being processed in specific route point.

AsynchConstants.FUNNEL_VALUE_HEADER
funnel_component_idstringYes

Funnel identifier that specifies unique point during message processing. Messages are checked and filtered out to this point.

This value is for msg-funnel component use.

Useful for msg-funnel component.

guaranteed_orderboolean (false)No

When this flag is true then mesage is processed in guaranteed order.

AsynchConstants.GUARANTEED_ORDER_HEADER
exclude_failed_stateboolean (false)No

Messages in FAILED state are taking into consideration for guaranteed order by default. If FAILED state should be excluded then this flag will be true.

Value of this attribute has sense only when guaranteed_order is true.

AsynchConstants.EXCLUDE_FAILED_HEADER
node_idnumberNoReference to cluster node, see Node table below

Table external_call

Table stores calls to external systems when extcall component is used.

Attribute

Type

NULL

Description

call_id

number

No

Unique identifier, primary key.

msg_id

number

No

Reference to asynchronous message.

operation_namestringNoOperation name.
statestring (enum)No

External call state:

  • PROCESSING: external call is just processing
  • OK: external call is successfully done
  • FAILED: external call failed, try it next time
  • FAILED_END: all confirmation tries failed, no further processing
entity_idstringNo

Entity identifier

msg_timestampdatetimeNo

Message timestamp (from source system).

creation_timestampdatetimeNo

Timestamp when this record was created.

last_update_timestampdatetimeNo

Timestamp when this record was lasttime updated.

failed_countnumberNoCount of unsuccessful external calls.

Tables request and response

These tables stores requests/responses in communication with external systems.

Attribute

Type

NULL

Description

req_id

number

No

Unique request identifier, primary key.

msg_idnumberYesBinding to asynchronous message (NULL for synchronous messages).
res_join_idstringYes

Identifier for pairing/joining request and response together.

  • It can be Message or correlation ID or exchange ID or some ID that is unique with uri.
  • This attribute helps to associate response to the right request.
uristringNoEndpoint/target URI
req_envelopetextNoThe request content
req_timestampdatetimeNoTimestamp when request was send to target URI.

Unique key: uri and res_join_id


Attribute

Type

NULL

Default

Description

res_id

number

No

 

Unique response identifier, primary key.

req_idnumberYes Binding to corresponding request to this response.
res_envelopetextYes The response itself. If not specified then failed reason must be filled.
failed_reasonstringYes Reason (SOAP fault, exception, stackTrace, ...) why communication failed.
res_timestampdatetimeNo Timestamp when response/failed reason was received back.
failedbooleanNofalseHas been communication failed? If yes then failed reason must be filled.
msg_idnumberYes Binding to asynchronous message (NULL for synchronous messages).

Table configuration

Table stores default configuration parameters. See External configuration model for more details.

Attribute

Type

NULL

Default

Description

code

number

No


unique code of one configuration item, e.g. ohf.asyncThread.processing.count.name

category_code

stringNo
unique code for specific configuration scope, e.g. "dataSource" for data source settings
current_valuestringYes
current (valid) value
default_valuestringYes
default value if there is no current_value defined
data_typestringNo
data type of current and default value
mandatorybooleanNotrueis this configuration item mandatory? In other worlds must be at least one current or default value defined?
validationstringYes
regular expression for checking if current value is valid

Table node

Table stores evidence of cluster nodes. See Nodes evidence for more details.

Attribute

Type

NULL

Default

Description

node_id

number

No


primary key, technical identifier

code

stringNovalue ohf.cluster.actualNodeInstance.code propertyunique node code
namestringNosame as code attributeunique node name
descriptionstringYes
Node description
statestringNo

Node's state:

  • RUN: Node handles new and existing (saved messages in ESB) messages
  • HANDLES_EXISTING_MESSAGES: Node handles only existing messages. New messages/requests are rejected. Used is Stopping mode.
  • STOPPED: Node not handles existing messages and new messages.