BPEL Dehydration Table Descriptions

Main tables used by the BPEL engine
cube_instance – stores instance metadata, eg. instance creation date, current state, title, process identifier
cube_scope – stores the scope data for an instance … all the variables declared in the bpel flow are stored here, as well as some internal objects to help route logic throughout the flow.
work_item – stores activities created by an instance … all BPEL activities in a flow will have a work_item created for it. This work item row contains meta data for the activity … current state, label, expiration date (used by wait activities) … when the engine needs to be restarted and instances recovered, pending flows are resumed by inspecting their unfinished work items.
document - stores large XML variables. If a variable gets to be larger than a specific size (configurable via the largeDocumentThreshold property via the domain configuration page) then the variable is stored in this table to alleviate loading/saving time from the cube_scope table.
audit_trail - stores the audit trail for instances. The audit trail viewed from the console is modelled from an XML document. As the instance is worked on, each activity writes out events to the audit trail as XML which is compressed and stored in a raw column. Querying the audit trail via the API/console will join the raw columns together and uncompress the contents into a single XML document.
audit_details - audit details can be logged via the api … by default activities such as assign log the variables as audit details (this behavior can be set via the auditLevel property on the domain configuration page). Details are separated from the audit trail because they tend to be very large in size … if the user wishes to view a detail they click a link from the audit trail page and load the detail separately. There is a threshold value for details too … if the size of a detail is larger than a specific value (see auditDetailThreshold) then it is place in this table, otherwise it is merged into the audit trail row.
dlv_message – callback messages are stored here. All non-invocation messages are saved here upon receipt. The delivery layer will then attempt to correlate the message with the receiving instance. This table only stores the metadata for a message. (eg. current state, process identifier, receive date).
dlv_message_bin – stores the payload of a callback message. The metadata of a callback message is kept in the dlv_message table, this table only stores the payload as a blob. This separation allows the metadata to change frequently without being impacted by the size of the payload (which is stored here and never modified).
dlv_subscription – stores delivery subscriptions for an instance. Whenever an instance expects a message from a partner (eg. receive, onMessage) a subscription is written out for that specific receive activity. Once a delivery message is received the delivery layer attempts to correlate the message with the intended subscription.
invoke_message – stores invocation messages, messages which will result in the creation of a instance. This table only stores the metadata for an invocation message (eg. current state, process identifier, receive date).
invoke_message_bin – stores the payload of an invocation message. Serves the same purpose the dlv_message_bin table does for dlv_message.
task – stores tasks created for an instance. The TaskManager process keeps its current state in this table. Upon calling invoking the TaskManager process, a task object is created, with a title, assignee, status, expiration date, etc… When updates are made to the TaskManager instance via the console the underlying task object in the db is changed.
schema_md – (just added via patch delivered to Veerle) contains metadata about columns defined in the orabpel schema. Use case driving this feature was how to change the size of a custom_key column for a cube_instance row? Changing the db schema was simple but the engine code assumed a certain length and truncated values to match that length to avoid a db error being thrown. Now, column lengths are defined in this table instead of being specified in the code. To change a column length, change the column definition in the table, then change the value specified in this table, then restart the server.
Column-by-column description:
table ci_id_range
- next_range (integer) – instance ids in the system are allocated on a block basis … once all the ids from a block have been allocated, another block is fetched, next_range specifies the start of the next block.
table cube_instance
- cikey (integer) – primary key … foreign key for other tables
- domain_ref (smallint) – domain identifier is encoded as a integer to save space, can be resolved by joining with domain.domain_ref.
- process_id (varchar) – process id
- revision_tag (varchar) – revision tag
- creation_date (date)
- creator (varchar) – user who created instance … currently not used
- modify_date (date) – date instance was last modified
- modifier (varchar) – user who last modified instance … currently not used
- state (integer) – current state of instance, see com.oracle.bpel.client.IInstanceConstants for values
- priority (integer) – current instance priority (user specified, has no impact on engine)
- title (varchar) – current instance title (user specified, no engine impact)
- status (varchar) – current status (user specified)
- stage (varchar) – current stage (user specified)
- conversation_id (varchar) – extra identifier associated with instance, eg. if passed in via WS-Addressing or user specified custom key.
- root_id (varchar) – the conversation id of the instance at the top of the invocation tree. Suppose A -> B -> C, root( B ) = A, root( C ) = A, parent( B ) = A, parent( C ) = B. This instance, instance at the top of the tree will not have this set.
- parent_id (varchar) – the conversation id of the parent instance that created this instance, instance at the top of the tree will not have this set.
- scope_revision (integer) – internal checksum of scope bytes … used to keep caches in sync
- scope_csize (integer) – compressed size of instance scope in bytes
- scope_usize (integer) – uncompressed size of instance scope in bytes
- process_guid (varchar) – unique identifier for the process this instance belongs to … if changes need to be made for all instances of a process, this column is used to query (eg. stale process).
- process_type (integer) – internal
- metadata (varchar) – user specified

table cube_scope
- cikey (integer) – foreign key
- domain_ref (integer) – domain identifier
- modify_date (date) – date scope last modified
- scope_bin (blob) – scope bytes

table work_item
- cikey (integer) – foreign key
- node_id (varchar) – part of work item composite key, identifier for bpel activity that this work item created for
- scope_id (varchar) – part of work item composite key, identifier for internal scope that this work item created for (note this is not the scope declared in bpel, the engine has an internal scope tree that it creates for each instance, bpel scopes will map to an internal scope but there will be other internal scopes that have no mapping to the bpel definition).
- count_id (integer) – part of work item composite key, used to distinguish between work items created from same activity in the same scope.
- domain_ref (integer) – domain identifier
- creation_date (date)
- creator (varchar) – user who created work item … currently not used
- modify_date (date) – date work item was last modified
- modifier (varchar) – user who last modified work item … currently not used
- state (integer) – current state of work item, see com.oracle.bpel.client.IActivityConstants for values
- transition (integer) – internal use, used by engine for routing logic
- exception (integer) – no longer used
- exp_date (date) – expiration date for this work item; wait, onAlarm activities are implemented as expiration timers.
- exp_flag (integer) – set if a work item has been called back by the expiration agent (ie. expired).
- priority (integer) – priority of work item, user specified, no engine impact
- label (varchar) – current label (user specified, no engine impact)
- custom_id (varchar) – custom identifier (user specified, no engine impact)
- comments (varchar) – comment field (user specified, no engine impact)
- reference_id (varchar) -
- idempotent_flag (integer) – internal use
- process_guid (varchar) – unique identifier for the process this work item belongs to … if changes need to be made for all instances of a process, this column is used to query (eg. stale process).

table document
- dockey (varchar) – primary key for document
- cikey (integer) – foreign key
- domain_ref (integer) – domain identifier
- classname (varchar) – no longer used
- bin_csize (integer) – compressed size of document in bytes
- bin_usize (integer) – uncompressed size of document in bytes
- bin (blob) – document bytes
- modify_date (date) – date document was last modified

table audit_trail
- cikey (integer) – foreign key
- domain_ref – domain identifier
- count_id (integer) – many audit trail entries may be made for each instance, this column is incremented for each entry per instance.
- block (integer) – when the instance is dehydrated, the batched audit trail entries up to that point are written out … this block ties together all rows written out at one time.
- block_csize (integer) – compressed size of block in bytes
- block_usize (integer) – uncompressed size of block in bytes
- log (raw) – block bytes

table audit_details
- cikey (integer) – foreign key
- domain_ref (integer) – domain identifier
- detail_id (integer) – part of composite key, means of identifying particular detail from the audit trail
- bin_csize (integer) – compressed size of detail in bytes
- bin_usize (integer) – uncompressed size of detail in bytes
- bin (blob) – detail bytes

table dlv_message
- conv_id (varchar) – conversation id (correlation id) for the message…this value is used to correlate the message to the subscription.
- conv_type (integer) – internal use
- message_guid (varchar) – unique identifier for the message…each message received by the engine is tagged with a message guid.
- domain_ref (integer) – domain identifier
- process_id (varchar) – identifier for process to deliver the message to
- revision_tag (varchar) – identifier for process revision
- operation_name (varchar) – operation name for callback port.
- receive_date (date) – date message was received by engine
- state (integer) – current state of message … see com.oracle.bpel.client.IDeliveryConstants for values
- res_process_guid (varchar) – after the matching subscription is found, the process guid for the subscription is written out here. – res_subscriber (varchar) – identifier for matching subscription once found.

table dlv_message_bin
- message_guid (varchar) – unique identifier for message
- domain_ref (integer) – domain identifier
- bin_csize (integer) – compressed size of delivery message payload in bytes
- bin_usize (integer) – uncompressed size of delivery message payload in bytes
- bin (blob) – delivery message payload

table dlv_subscription
- conv_id (varchar) – conversation id for subscription, used to help correlate received delivery messages.
- conv_type (integer) – internal use
- cikey (integer) – foreign key
- domain_ref (integer) – domain identifier
- process_id (varchar) – process identifier for instance
- revision_tag (varchar) – revision tag for process
- process_guid (varchar) – guid for process this subscription belongs to
- operation_name (varchar) – operation name for subscription (receive, onMessage operation name).
- subscriber_id (varchar) – the work item composite key that this subscription is positioned at (ie. the key for the receive, onMessage work item).
- service_name (varchar) – internal use
- subscription_date (date) – date subscription was created
- state (integer) – current state of subscription … see com.oracle.bpel.client.IDeliveryConstants for values
- properties (varchar) – additional property settings for subscription

table invoke_message
- conv_id (varchar) – conversation id for message, passed into system so callbacks can correlate properly.
- message_guid (varchar) – unique identifier for message, generated when invocation message is received by engine.
- domain_ref (integer) – domain identifier
- process_id (varchar) – identifier for process to deliver the message to
- revision_tag (varchar) – revision tag for process
- operation_name (varchar) – operation name for receive activity
- receive_date (date) – date invocation message was received by engine
- state – current state of invocation message, see com.oracle.bpel.client.IDeliveryConstants for values
- priority (integer) – priority for invocation message, this value will be used by the engine dispatching layer to rank messages according to importance … lower values mean higher priority … messages with higher priority are dispatched to threads faster than messages with lower values.
- properties (varchar) – additional property settings for message

table invoke_message_bin
- message_guid (varchar) – unique identifier for message
- domain_ref (integer) – domain identifier
- bin_csize (integer) – compressed size of invocation message payload in bytes
- bin_usize (integer) – uncompressed size of invocation message payload in bytes
- bin (blob) – invocation message bytes

table task
- domain_ref (integer) – domain identifier
- conversation_id (varchar) – conversation id for task instance … allows task instance to callback to client
- title (varchar) – current title for task, user specified
- creation_date (date) – date task was created
- creator (varchar) – user who created task
- modify_date (date) – date task was last modified
- modifier (varchar) – user who last modified task
- assignee (varchar) – current assignee of task, user specified, no engine impact
- status (varchar) – current status, user specified, no engine impact
- expired (integer) – flag is set if task has expired
- exp_date (date) – expiration date for task, expiration actually takes place on work item in TaskManaged instance, upon expiration task row is updated
- priority (integer) – current task priority, user specified, no engine impact
- template (varchar) – not used
- custom_key (varchar) – user specified custom key
- conclusion (varchar) – user specified conclusion, no engine impact

Comments

  1. Oracle service bus transforms complex architectures into agile integration networks by connecting interactions between services and applications. OSB enrich extreme performance and scalability by applying sophisticated techniques for all dimensions to enhance the growth of organization. It allows continuous logging of messages at runtime and offers full-fledged web based design environment. Visual debugger allows developers to define break points and execution of stack for message processing pipeline enable empirical approach for performance tuning.
    Contact us:
    India: 91 9949599844
    USA:+1-347-606-2716

    ReplyDelete
  2. I have no idea what is Main tables used by the BPEL engine but in this post I learn a lot thank you.
    Regards,
    oracle soa training in hyderabad,
    oracle service bus training.

    ReplyDelete

Post a Comment

Popular posts from this blog

Difference between Route, Service Callout, Publish

OSB actions in proxy service

XQuery functions that supported by OSB