Orchestrator

This section describes the functions of the TIBCO Order Management Orchestrator component.

Orchestrator is a Java based micro-service and it can be easily scaled-up and down behind a load balancer. This simplifies the deployment and administration. The Java implementation of the Orchestrator is multi-threaded, which improves performance.

Orchestrator communicates with Automated Order Plan Development using RESTful APIs.

Orchestrator and southbound systems can communicate by using the following modes:

REST: Orchestrator invokes a RESTful API exposed by the southbound system (for example: Processcomponent). In the Orchestrator, when the default acknowledgment mode is set to REST, the Orchestrator invokes the planitem/planItemExecuteRequest endpoint implemented by the processcomponent. When you use the acknowledgment mode as REST, the Orchestrator expects the processcomponent to implement RESTful APIs and expose the following endpoints:

  • * /pqf

  • * /planitem/suspendrequest

  • * /planitem/milestonerelease

  • * /planitem/executionrequest

  • */planitem/errorhandlerrequest

  • * /planitem/activaterequest

  • */plan/opdErrorHandlerRequest

  • * /feasibility

After the request is processed by the southbound system, it invokes an API exposed by Orchestrator corresponding to the request that was received by it. The corresponding REST endpoints are exposed by the Orchestrator and are used by the process-component. The RESTful endpoints are as follows:

  • * v1/order/preQualificationFailedReply

  • * v1/planitem/suspendreply

  • * v1/planitem/milestonenotify

  • * v1/planitem/executionreply

  • * v1/planitem/errorHandlerreply

  • * v1/order/feasibilityReply

  • * /v1/plan/error

MESSAGING: When the default acknowledgment mode is Messaging, the Orchestrator sends the outbound notification for the processcomponent over Messaging. There are various categories of notifications that Orchestrator sends over different queues.

Message Type Queue Name
FeasibilityRequest tibco.aff.orchestrator.provider.order.feasibility.request
PlanItemExecuteRequest tibco.aff.orchestrator.planItem.execute.request
PlanItemFailedRequest tibco.aff.orchestrator.provider.planItem.failed.request
PreQualificationFailedRequest tibco.aff.orchestrator.provider.order.prequal.failed.request
PlanItemActivateRequest tibco.aff.orchestrator.planItem.activate.request
PlanItemSuspendRequest tibco.aff.orchestrator.planItem.suspend.request
MilestoneReleaseRequest tibco.aff.orchestrator.planItem.milestone.release.request
OPDRequest tibco.aff.orchestrator.provider.order.opd.request

The processcomponent listens on the respective queues and processes the notifications that are sent by the Orchestrator. Once processed, the processcomponent replies on the following queues.

Message Type Queue Name
FeasibilityReply

Queue: tibco.aff.orchestrator.provider.order.feasibility.reply

Dead Queue: tibco.aff.orchestrator.provider.order.feasibility.reply.dead

MilestoneNotifyRequest

Queue: tibco.aff.orchestrator.planItem.milestone.notify.request

Dead Queue: tibco.aff.orchestrator.planItem.milestone.notify.request.dead

OPDReply

Queue: tibco.aff.orchestrator.provider.order.opd.reply

Dead Queue: tibco.aff.orchestrator.provider.order.opd.reply.dead

PlanItemExecuteReply

Queue: tibco.aff.orchestrator.planItem.execute.reply

Dead Queue: tibco.aff.orchestrator.planItem.execute.reply.dead

PlanItemFailedReply

Queue: tibco.aff.orchestrator.provider.planItem.failed.reply

Dead Queue: tibco.aff.orchestrator.provider.planItem.failed.reply.dead

PlanItemSuspendReply

Queue: tibco.aff.orchestrator.planItem.suspend.reply

Dead Queue: tibco.aff.orchestrator.planItem.suspend.reply.dead

PreQualificationFailedReply

Queue: tibco.aff.orchestrator.provider.order.prequal.failed.reply

Dead Queue: tibco.aff.orchestrator.provider.order.prequal.failed.reply.dead

In the request for all the modes, Orchestrator includes some headers, which are expected to be included in the response headers as well.

  • acknowledge: The communication mode. To be used by the southbound system to determine the processing semantics.