29.198-033GPPOpen Service Access (OSA) Application Programming Interface (API)Part 3: FrameworkTS
8a.1.1 Event Notification Sequence Diagrams
No Sequence Diagrams exist for Event Notification.
8a.1.2 Service Subscription Sequence Diagrams
8a.1.2.1 Service Discovery and Subscription Scenario
This scenario is shown in the sequence diagram below. Services are subscribed to by the enterprise operator on behalf of the client applications which then use these services. Before an enterprise operator can subscribe to a service, it must have knowledge of the existence of that service in the framework. The enterprise operator discovers the set of services provided by the framework using the IpServiceDiscovery interface. Initially, the enterprise operator obtains a list of service types supported by the framework by invoking listServiceTypes() on IpServiceDiscovery interface. Then it obtains the description of a service type using describeServiceType() to find out the set of properties applicable to a particular service type. Subsequently it invokes discoverService() to discover the services of a given type which supports the desired set of property values. The discoverService() method returns a list of "serviceIDs" and their associated property values. The service discovery phase is followed by the service subscription phase. The enterprise operator uses the IpServiceContractManagement and IpServiceProfileManagement interfaces to perform service subscription.
The enterprise operator invokes the createServiceContract() on IpServiceContractManagement interface to subscribe to a service. Depending upon the Framework Operator’s policy, the services may be subscribed by identifying them by their "serviceID" or by their service type. In the former case only the specific service can be used by the enterprise operator and its client applications. In the latter case, all registered services of the given type can be used. The enterprise operator may create multiple service profiles (each of which are a restriction of the service contract) by invoking createServiceProfile() on IpServiceProfileManagement interface and assign each service profile to a different Subscription Assignment Group (SAG), using assign() method. This allows an enterprise operator to assign different service privileges to different client application groups. During the life time of a service contract, the enterprise operator may perform service contract and service profile management functions, such as modifying the service profiles (modifyServiceProfile()) and service contract (modifyServiceContract()), re‑assigning the service profiles to a SAG (assign()), obtaining information about a service profile (getServiceProfile()), deleting service profiles (deleteServiceProfile()), etc. These methods may be interleaved in any logical order. The enterprise operator or the client applications, can at any time obtain a list of currently subscribed services by invoking listSubscribedServices() method on the IpServiceDiscovery interface. This method returns a list of serviceIDs of the set of subscribed services. The service contract ceases to exist after the specified end date. The deleteServiceContract deletes the service contract object held in the framework. It is up to the discretion of the Framework operator to allow the enterprise operator to delete a service contract before its specified end date.
After the service subscription is performed the client applications can access and use the set of subscribed services in addition to the set of freely available services. In order to start a service, the interface reference of the service is required. The discoverService() method or the listSubscribedServices() method, described above, return the "serviceID". The interface reference of the service is obtained in the service access phase. The service access phase begins with the client applications selecting the service, via the selectService() method, and signing a service agreement, via the signServiceAgreement() method. The selectService() method is used by the client application to identify the service that it wants to initiate. The input to the selectService() is the "serviceID" returned by the discoverService() or the listSubscribedServices() and the output is a "serviceToken". The serviceToken is free format text token returned by the framework, which can be used as part of a service agreement. If the service is not subscribed by the enterprise operator, then a "service not subscribed" exception is raised. The signServiceAgreement() is invoked by the client application on the framework to sign an agreement on the service. The input to this method is the service token returned by the selectService() method. The sign service agreement is used as a way of non‑repudiation of the intention to use the service by the client application. The successful completion of the signServiceAgreement() returns the interface reference to the service (or to its service manager). The client application can then use this interface reference to start the service.
8a.1.2.2 Enterprise Operator and Client Application Subscription Management Sequence Diagram
The first step in the service subscription process is the creation of an account for the enterprise operator. The creation of enterprise operator accounts is performed by the Framework Operator via interfaces outside of the present document. When the enterprise operator’s account has been created they are allowed to use the framework. The enterprise operator (acting in the role of service subscriber) can then create accounts within the framework for all of the client applications in its domain. The enterprise operator obtains the reference to the IpEntOpManagement interface by invoking obtainInterface() on the IpAccess interface. The enterprise operator at any time may inspect its subscription account by invoking describeEntOpAccount on the IpEntOpAccountInfoQuery interface and modify the subscriber‑related information contained in its subscription account by invoking modifyEntOpAccount() on IpEntOpAccountManagement interface.
An enterprise operator usually has many client applications in its enterprise domain. These client applications must be registered within the framework so that the set of services subscribed to by the enterprise operator (through createServiceContract()) can be assigned to these client applications by associating a service profile (a restriction of service contracts) with a group of client applications, called a Subscription Assignment Group (SAG). In order to create an account for individual client applications, the enterprise operator invokes createClientApp() on IpClientAppManagement interface. The enterprise operator groups a related set of client applications in a SAG so that the same service profile can be assigned to them. The enterprise operator may create an empty SAG by invoking createSAG() on IpClientAppManagement interface. The enterprise operator adds client applications to the newly created SAG by invoking addSAGMembers() on IpClientAppManagement interface. The enterprise operator also performs other client application / SAG management functions such as modifyClientApp(), deleteClientApp(), modifySAG(), listSAGs(), listSAGMembers(), addSAGmembers(), removeSAGmembers()etc. These methods can be interleaved in any logical order. Finally, the enterprise operator (or the framework operator) can delete its subscription account by invoking deleteEntOpAccount() on IpEntOpAccountManagement interface.