User Interface Settings
JMS Settings
The JMS transport is provided by TIBCO EMS. The message sent is a TextMessage with the payload set with XML messages defined by OSS/J XSD.
The default OSS_APPLICATION_DN for FP is set to the following:
System/JSR264/ApplicationType/OrderManagement/Application/1-0;1-0-0;TIBCO-FOS-FP/
Request Message
Set the following JMS message properties to send OSS/J requests to Fulfillment Provisioning:
JMS Message Property Name | JMS Message Property Value |
---|---|
OSS_APPLICATION_TYPE | OrderManagement |
OSS_REQUEST_SENDER_ID | The request sender id, as the request sender identifies itself |
OSS_REPLYTO_DESTINATION_TYPE | QUEUE |
OSS_MESSAGE_TYPE | REQUEST |
OSS_MESSAGE_NAME |
The message name. For example, createRequestByValueRequest |
In addition to the these properties, you must set the following user JMS Message Header fields:
Response Message
Fulfillment Provisioning sets the following JMS message properties when it responds:
Property Name | Property Value |
---|---|
OSS_APPLICATION_TYPE | OrderManagement |
OSS_REQUEST_SENDER_ID |
The request sender id, as the request sender identifies itself |
OSS_REPLY_SENDER_ID | ${OSS_APPLICATION_DN}Comp/JVTMessage |
OSS_MESSAGE_TYPE |
RESPONSE in case of success EXCEPTION in case of failure |
OSS_MESSAGE_NAME |
The message name. For example, createRequestByValueResponse (success) or createRequestByValueException (failure) |
Notification Message
Fulfillment Provisioning sets the following JMS message properties when sending a notification:
JMS Queues, Topics, and Factories
JMS Object | Description |
---|---|
MessageQueue |
JMS queue on which the client sends a request message Default: tibco.fos.fp.ossj.OrderManagement.MessageQuue |
XVTEventTopic |
A JMS topic where Fulfillment Provisioning publishes notifications |
JVTEventTopic |
A JMS topic for the JVT Order Management where to publish events NOT USED |
QueueConnectionFactory | Queue connection factory |
TopicConnectionFactory | Topic connection factory |
OSS/J Order Management Data Model
The external interfaces for the OSS/J Order Management (JMS Profile) Client Adapter are all described in the OSS/J Order Management specification. Only a few types are extended and described in two additional XSDs.
OSS/J Order Management Operations
The OSS/J Order Management API provides operations for single request, but also for multiple-request (batch) processing.
Mandatory operations can be categorized in the following functional groups:
- Querying specifications
- Instantiating requests by specifications
- Getting/modifying requests currently in the system
- Managing request lifecycle (for example, start, abort)
The optional API includes the following operations:
Operations are two-way. Responses generally contain very light information which is immediately available to the service upon reception of the requests. Information that can only be gathered after an undefined amount of time is sent on a different channel, under the form of specific JMS message.
Fulfillment Provisioning implements most of this operations using the prov::SOCommand interface, which means that those operations are asynchronous (in the P.RUNTIME vocabulary) and performed on ServiceOrders once those ServiceOrders reach an OrderQueue.
Operation getSupportedOptionalOperations (mandatory)
public String[] getSupportedOperationsRequest() throws java.rmi.RemoteException;Returns the list of supported optional operations.
Fulfillment Provisioning returns the following:
Operation getRequestSpecifications (mandatory)
public RequestSpecificationValue[] getRequestSpecifications() throws java.rmi.RemoteException;
Returns the list of supported RequestSpecificationValue (loaded by the Catalog).
This is the first operation which is called. Fulfillment Provisioning returns a list of omimpl:ServiceOrderSpecificationImplValue, for every Fulfillment Provisioning Catalog product version.
Choose a SerivceOrderSpecificationValue from the list and then call getSupportedEntitySpecificationValues.
Operation getRequestSpecificationByKey (mandatory)
public RequestSpecificationValue getRequestSpecificationByKey( RequestSpecificationKey requestSpecificationKey, String[] attrNames) throws javax.oss.OssIllegalArgumentException, java.rmi.RemoteException, javax.ejb.ObjectNotFoundException ;
Returns the RequestSpecificationValue matching the given RequestSpecificationKey.
Fulfillment Provisioning returns a omimpl:ServiceOrderSpecificationImplValue.atttrNames is not supported, indicating all the attributes are returned.
Operation getRequestSpecificationTypes (mandatory)
public String[] getRequestSpecificationTypes() throws java.rmi.RemoteException;
Returns the list of supported RequestSpecificationValue types (string identifying the concrete type). Fulfillment Provisioning returns omimpl:ServiceOrderSpecificationImplValue:NS.
Operation getRequestTypes (mandatory)
public String[] getRequestTypes() throws java.rmi.RemoteException ;
Returns the list of RequestSpecificationValue instance names loaded by the catalog. Fulfillment Provisioning returns omimpl:ServiceOrderImplValue.
Operation createRequestByValue (mandatory)
public RequestKey createRequestByValue( RequestValue requestValue) throws javax.oss.OssIllegalArgumentException, javax.oss.DuplicateKeyException, javax.ejb.CreateException;
Creates a request in the system given a RequestValue and returns the related RequestKey. If requestValue.key is filled, Fulfillment Provisioning uses it, eventually throwing a DuplicateKeyException if the key already exists. If requestValue.key is not filled, Fulfillment Provisioning generates one and returns it in the response.
Fulfillment Provisioning must create the ServiceOrder and put it in a temporary queue, waiting for a start operation.
Operation tryCreateRequestsByValues (mandatory)
public RequestKeyResult[] tryCreateRequestsByValues( RequestValue[] requestValues) throws javax.oss.OssIllegalArgumentException;
Best effort bulk operation. Attempts to create a list of requests given a list of RequestValue and returns the list of associated RequestKey.
Operation startRequestByKey (mandatory)
public void startRequestByKey( RequestKey requestKey) throws javax.oss.OssIllegalStateException, javax.oss.OssIllegalArgumentException, java.rmi.RemoteException, javax.ejb.ObjectNotFoundException;
Puts the Request in interactionStatus RUNNING and triggers the server to start processing the Request.
Related atomic bulk operation: startRequestByKeys
Related best effort bulk operation: tryStartRequestsByKeys
Fulfillment Provisioning must lookup for the corresponding ServiceOrder and if it finds it, release it in the Fulfillment Provisioning application flow.
Operation tryStartRequestsByKeys (mandatory)
public RequestKeyResult[] tryStartRequestsByKeys( RequestKey[] requestKey) throws javax.oss.OssIllegalArgumentException java.rmi.RemoteException;
Operation createAndStartRequestByValue (mandatory)
public RequestKey createAndStartRequestByValue( RequestValue requestValue) throws javax.ejb.DuplicateKeyException, javax.ejb.CreateException, javax.oss.OssIllegalArgumentException, java.rmi.RemoteException, javax.ejb.ObjectNotFoundException;
Request the implementation to start request execution immediately after a valid request instance has been created.
Related atomic bulk operation: createAndStartRequestsByValues
Related best effort bulk operation: tryCreateAndStartRequestsByValues
Operation tryCreateAndStartRequestsByValues (mandatory)
public RequestKeyResult[] tryCreateAndStartRequestsByValues( RequestValue[] requestValues) throws javax.oss.OssIllegalArgumentException java.rmi.RemoteException;
Attempts to create and start a list of requests given a list of RequestValue and returns the list RequestKey on which the operation failed.
Operation getRequestByKey (mandatory)
public RequestValue getRequestByKey( RequestKey requestKey, String[] attrNames) throws javax.oss.OssIllegalArgumentException, java.rmi.RemoteException, javax.ejb.ObjectNotFoundException;
Related atomic bulk operation: getRequestsByKeys
Related best effort bulk operation: NONE
Fulfillment Provisioning does not support the attrNames parameter, which means that a ServiceOrderValue is returned with all its attributes.
Operation getRequestsByKeys (mandatory)
public RequestValue[] getRequestsByKeys( RequestKey[] requestKeys, String[] attrNames) throws javax.oss.OssIllegalArgumentException, java.rmi.RemoteException, javax.oss.FinderException;
Gets the values of multiple requests.
Related best effort bulk operation : trySetRequestsByKeys
Related single operation : getRequestByKey
Fulfillment Provisioning does not support the attrNames parameter, which means all the request value attribute attributes are returned.
Operation setRequestByValue (mandatory)
public void setRequestByValue( RequestValue requestValue, boolean resyncRequired) throws javax.oss.OssIllegalStateException, javax.oss.OssIllegalArgumentException, java.rmi.RemoteException, javax.ejb.ObjectNotFoundException, javax.oss.OssSetException, javax.oss.OssResyncRequiredException
Changes the attribute values of a Request. The populated attributes only are changed.
Related atomic bulk operation: setRequestsByValues
Related best effort bulk operation: trySetRequestsByValues
Changes the attribute values of a Request. Only the attributes that are populated are changed.
Related atomic bulk operation : setRequestsByValues
Related best effort bulk operation : trySetRequestsByValues
Operation trySetRequestsByValues (mandatory)
public RequestKeyResult[] trySetRequestsByValues( RequestValue[] requestValues, boolean resyncRequired) throws javax.oss.OssIllegalArgumentException, java.rmi.RemoteException
Changes the attribute values of multiple Requests.
Related atomic bulk operation: setRequestsByValues
Related single operation: setRequestByValue
Operation trySetRequestsByKeys (mandatory)
public RequestKeyResult[] trySetRequestsByKeys( RequestKey[] requestKeys, RequestValue requestValue) throws javax.oss.OssIllegalArgumentException, java.rmi.RemoteException
Changes the attribute values of multiple Requests.
Related atomic bulk operation: setRequestsByKeys
Related single operation: NONE
Operation abortRequestByKey (mandatory)
public void abortRequestByKey( RequestKey requestKey) throws javax.oss.OssIllegalStateException, javax.oss.OssIllegalArgumentException, java.rmi.RemoteException, javax.ejb.ObjectNotFoundException
Aborts processing of the Request identified by the key.
Related atomic bulk operation: abortRequestsByKey
Related best effort bulk operation: tryAbortRequestsByKeys
Fulfillment Provisioning implements this operation by using the soadmin::Cancel interface, which means that Fulfillment Provisioning aborts the order only if it is flow controlled in a queue (heap or heap out).
Operation tryAbortRequestsByKeys (mandatory)
public RequestKeyResult[] tryAbortRequestsByKeys( RequestKey[] requestKey) throws javax.oss.OssIllegalArgumentException, java.rmi.RemoteException;
Aborts processing of the requests identified by the requestKey parameter and the returns the list of RequestKeys where the operation failed.
Related atomic bulk operation: abortRequestsByKey
Related single operation: abortRequestByKey
Operation suspendRequestByKey (mandatory)
void resumeRequestByKey( RequestKey requestKey) throws javax.oss.OssUnsupportedOperationException, javax.oss.OssIllegalStateException, javax.oss.OssIllegalArgumentException, java.rmi.RemoteException, javax.ejb.ObjectNotFoundException ;
Puts the Request in the RequestState.SUSPENDED state . No further attribute or state changes take place on the Request and the processing of the Request is stopped.
Related atomic bulk operation: suspendRequestsByKeys
Related best effort bulk operation: trySuspendRequestsByKeys
Fulfillment Provisioning implements this operation by using the soadmin::Suspend interface.
Operation resumeRequestByKey (optional)
void resumeRequestByKey(RequestKey requestKey) throws javax.oss.OssUnsupportedOperationException, javax.oss.OssIllegalStateException, javax.oss.OssIllegalArgumentException, java.rmi.RemoteException, javax.ejb.ObjectNotFoundException;
Puts the suspended Request in the RequestState.RUNNING state.
Related atomic bulk operation: resumeRequestsByKeys
Related best effort bulk operation: tryResumeRequestsByKeys
Fulfillment Provisioning implements this operation by using the soadmin::Resume interface.
Operation removeRequestByKey (optional)
void removeRequestByKey( RequestKey requestKey) throws javax.oss.OssUnsupportedOperationException, javax.oss.OssIllegalStateException, javax.oss.OssIllegalArgumentException, java.rmi.RemoteException, javax.ejb.ObjectNotFoundException;
Terminates the lifetime of a request. The request is removed from the implementation. If this method is not supported, it can be assumed that the implementation takes care of removing the Requests by itself .
Related atomic bulk operation: removeRequestsByKeys
Related best effort bulk operation: tryRemoveRequestsByKeys
Fulfillment Provisioning application is responsible for deleting ServiceOrders once processing is complete. Fulfillment Provisioning allows clients to explicitly remove a request which is in the closed state. If the request is not in the closed state, then it is left untouched and a OssIllegalStateException exception is returned.
Operation getSupportedEntitySpecificationValues (optional)
EntitySpecificationValue[] getSupportedEntitySpecificationValues( RequestSpecificationKey specificationKey) throws javax.oss.OssUnsupportedOperationException, javax.oss.OssIllegalArgumentException, java.rmi.RemoteException, javax.ejb.FinderException;
Returns the list of EntitySpecificationValue related to a RequestSpecificationKey.
Fulfillment Provisioning returns a list of omimpl:ServiceSpecificationImplValue which are related to the ServiceOrderSpecificationKey specificationKey, indicating that this operation returns the list of ServiceSpecificationImplValue for a given Fulfillment Provisioning Catalog version.
OSS/J Notification Events
OSS/J JMS profile uses JMS messages to send notifications.
The following notifications can be sent:
- RequestStateChangedEvent
- RequestAttributeValueChangeEvent
- AwaitingClientValidationEvent
- AwaitingClientInputEvent
- RequestCreateEvent
- RequestRemoveEvent
The OSS/J Order Management specification defines precisely in which conditions these events are sent. In order to be compliant with the specification, those conditions must be validated.
RequestStateChangeEvent
Event that is sent if a request has changed its interactionStatus.
This event is particularly interesting when interactionStatus defines a final state. It embodies the request value and therefore can be interpreted as the final response to the initial request. It contains the related RequestKey.
Fulfillment Provisioning sends this event when the request is created.
RequestAttributeValueChangeEvent
This event is sent if any request attribute is changed. It contains the new RequestValue.
A message is sent when:
- setRequestByValue has caused changes to attribute values of a request
- (Some) values of a request have been changed during the execution of a request by the implementation. In this case, the implementation must publish a message, latest before the request completes.