The present invention relates generally to communications and in particular to methods, devices and systems for the composition of services in communications systems.
Communication systems continue to grow and evolve. Convergence between different types of communication systems, e.g., Internet Protocol (IP), connection-based voice communications, and the like, is advancing rapidly. Recently the phrase “Next Generation Network” (NGN) has been used to describe various activities associated with this evolution. As defined by the International Telecommunications Union (ITU), an NGN is a packet-based network able to provide services (including telecommunication services) and able to make use of multiple broadband, QoS-enabled transport technologies, in which service-related functions are independent from underlying transport-related technologies. NGNs will also likely offer unrestricted access by users to different service providers and will support generalized mobility, which in turn will provide for consistent service provision to end users. It is expected that these NGNs (or converged networks) will be able to provide more enriched and seamless multimedia services as well as bringing both new and existing services to the large mobile network market.
Various mechanisms for composing services for networks have been proposed including, signaling based solutions, web service solutions and multi-protocol architectures. Each of these types of service creation methods has its own benefits and drawbacks, in its area of service creation. However, in the realm of converged networks it is expected to be desirable to have service composition architectures designed for the challenges associated with converged networks, e.g., service composition techniques and methods which provide a rapid time to market for the composed service.
Accordingly, systems and methods for the creation and deployment of services on a converged network which address these, and other, issues are desirable.
According to an exemplary embodiment a method for composing a service includes: receiving, at a coordinator function, at least one pre-compiled code segment, wherein the at least one pre-compiled code segment describes the service; modifying and validating, at a design function, the at least one pre-compiled code segment, wherein the validating includes checking for syntax errors; generating additional code associated with the service and compiling both of the at least one validated pre-compiled code segment and the additional code, wherein the step of compiling results in a deployable service; and deploying the service, wherein the service is usable by at least one subscriber.
According to another exemplary embodiment a method for composing a service includes: receiving at least one pre-compiled code segment associated with the service; forwarding the at least one pre-compiled code segment toward a service design function; receiving a modified version of the at least one pre-compiled code segment from the service design function; forwarding the modified version of the at least one pre-compiled code segment toward a service implementer; receiving a compiled version of the modified version of the at least one pre-compiled code segment from the service implementer; and deploying the compiled version as the service.
According to still another exemplary embodiment a communications node for coordinating composition of a service includes: a processor; a memory; and a communications interface which performs the steps of: receiving at least one pre-compiled code segment associated with the service; forwarding the at least one pre-compiled code segment toward a service design function; receiving a modified version of the at least one pre-compiled code segment from the service design function; forwarding the modified version of the at least one pre-compiled code segment toward a service implementer; receiving a compiled version of the modified version of the at least one pre-compiled code segment from the service implementer; and deploying the compiled version as the service.
The accompanying drawings illustrate exemplary embodiments, wherein:
The following detailed description of the exemplary embodiments refers to the accompanying drawings. The same reference numbers in different drawings identify the same or similar elements. Also, the following detailed description does not limit the invention. Instead, the scope of the invention is defined by the appended claims.
Convergence between different types of communication systems is occurring at various speeds in different geographic areas. It is expected that users of these “converged” networks (also sometimes described as “next generation networks” (NGNs)) will desire quick, efficient creation and deployment of services which are designed for use in this converged network environment, but which are also potentially usable in other environments. Prior to discussing the exemplary embodiments below, a purely illustrative overview of a converged network will now be described with respect to
As improvements are made with respect to communications technologies and infrastructures, it is expected for converged networks (or NGNs) to become more common. An exemplary overview of a converged network 102 is shown in
Exemplary embodiments described below can be used to both create and deploy services for use in converged networks 102 (or other networks) as well as to improve the process of creating these services. Implementation of the below described exemplary embodiments can result in a reduced time to market for these services, provide a unified orchestration of these services through the use of a coordinator function (or a similar function) and allow the repeated re-use of code blocks to support these services.
According to exemplary embodiments, the composition life cycle for services for networks, e.g., converged network 102, can include the following phases: design, implementation, deployment, activation, execution, upgrade and retirement. Additionally, according to exemplary embodiments, this service composition life cycle can generally be automated through the use of a multimedia service composition factory (MSCF) which typically consists of a set of coordinated services that perform the various life cycle portions as desired.
According to exemplary embodiments, service composition can be relatively simple and quick to perform, through the use of a visual composition language which can allow programmers and non-programmers to design new composed services, by assembling graphical constructs to describe composed service interfaces. These composed services can be automatically generated and implemented as services which allow for the reuse of both previously composed services and parts of previously composed services which can then be used to make new composed services. These composed services can be deployed over the Internet as well as other networks. This automatic generation and reuse of composed services also avoids creation of a new service execution environment, i.e., there typically will be no need for new deployments of the service execution environment. An exemplary system for implementing the service composition life cycle for services for networks according to exemplary embodiments is shown below with respect to
Therein, a multimedia service composition factory 200 includes constituent functions, logic, modules and nodes for implementing the service composition life cycle according to these exemplary embodiments. Initially an operator interacts with an Integrated Development Environment (IDE) 202, which can include a graphical user interface (GUI) for selecting and relating visual code constructs (some of which can be pre-defined) to one another, a library of previously compiled code fragments to be used as basic constructs, the platform used for compiling the aggregated constructs, the interpreter to analyze the high level language used in handling these basic constructs, and a wizard for tracking progress of a composed service through the multimedia service composition factory and for interacting with received feedback, if needed, as the composed service is generated by the multimedia service composition factory. These visual code constructs can include tests, loops, parallel processing, operation calls and the like, and can be included in an initially deployed IDE 202. These visual code constructs will typically be designed as plug-ins that allow sharing, reuse and future extension of the visual language. Additionally, basic and composite multimedia services can be manipulated by the IDE 202, e.g., discovery, composition, implementation, etc. In this context, the IDE 202 can be generally considered to include elements displayed on the screen as well as the supporting logic for processing user entered elements and their results, e.g., the tracking wizard, compiling code constructs and the like. According to one exemplary embodiment, these code constructs as displayed by the IDE 202 and shown in
As described above, a library of code constructs can be a part of the IDE 202. According to other exemplary embodiment, the code constructs and code fragments are templates that are shared, either in a central storage location (not shown in
To start a new service composition according to these exemplary embodiments, the desired visual code constructs can be dragged, i.e., by placing a cursor (not shown) over one of the constructs, depressing a mouse button and moving the cursor along with the selected visual construct to the desired location in the work area and releasing the mouse button, into a work area 306 on the IDE 202 which can be used to make new service compositions. When all of the desired visual constructs have been dragged to the work area 306, and linked together using logical links (described below), a user can indicate to the IDE 202 that the newly created service is ready for further processing, e.g., by pressing a “Done” button on the IDE 202 (not shown). Then, for example one or more code segments in an eXtensible Markup Language (XML) format can be generated by performing a pre-compiling function prior to transmitting the service composition to the coordinator function 204. Specific examples of services which are initially composed using such a IDE 202 will be described in more detail below with respect to
According to exemplary embodiments, the coordinator function 204 ensures that the steps used in the service composition life cycle are handled by the relevant components of the MSCF 200, e.g., the IDE 202, the designer function 206, the implementer function 208, the verifier function 210, the activator function 216 and the installer function 214, in a timely and synchronized fashion. According to another exemplary embodiment, some of these various components shown as separate entities within the MSCF 200 can be combined as desired with IDE 200 as a single entity, e.g., the previously described IDE 202, the coordinator function 204, the designer function 206 and the implementer function 208.
After receiving pre-compiled code segments associated with a new service to be composed from the IDE 202, the coordinator function 204 sends those pre-compiled code segments to the designer function 206. The designer function 206 receives the service composition from the coordinator function 204 and checks the service composition for syntax. Additional various visual code constructs for use by the IDE 202 can be created by the designer function and transmitted back to the IDE 202 via the coordinator function 204. Also, the designer function 206 can take received service compositions and improve or modify them as desired. After completion of its review of the received service composition, the designer function 206 returns the service composition to the coordinator function 204.
The coordinator function 204 then sends the service composition to the implementer function 208 which takes the received service composition and generates code, e.g., Java, C++ or the like, and re-compiles the service composition for future execution on a physical communication node, e.g., execution server 220. More specifically, the implementer function 208 includes a generator sub-function that takes as input the service description, the templates and produces source code in a given language which is then compiled and packaged. Additionally, the implementer function 208 according to this exemplary embodiment performs a verification procedure on the compiled code to ensure that the compiled code for this new service is not in conflict with other code associated with previously created services, e.g., to remove or reduce the possibility of compiling failure due to linked code issues from various code libraries. After re-compiling the service composition, the service composition is sent back to the coordinator function 204.
The coordinator function 204 takes the compiled code received from the implementer function 208 and then transmits the new service composition to the verifier function 210 and the installer function 214. Before deploying the composed service, the installer function 214 requests the verifier function 210 to ensure that all of the services to be called by the new service being composed actually exist. The verifier function 210 is in communications with a database, e.g., Universal Description, Discovery and Integration (UDDI) registry 212, which maintains dependencies to avoid undeploying or replacing a composed service (or a portion of one) that is referenced by other services. Additionally, the verifier function 210 consults the UDDI registry 212 to ensure that the name used for the composed service is not currently being used by another composed service. In other words, the verifier 210 looks for, and resolves (where possible), external conflicts for the newly composed service. If a conflict is found that the verifier 210 cannot resolve, feedback is initially sent to the coordinator 204 so that the coordinator 204 can create coordination logs on different service composition(s) prior to sending the feedback (plus coordination logs as desired) on to the user through the IDE 202. These coordination logs can include context help provided by the coordinator as it interrogates the IDE 202. According to an alternative embodiment, the coordinator function 204 can be stateless, in which case the coordinator function would forward the conflict information directly to the IDE 202.
Upon receiving a positive response that the composed service has been verified and is ready for deployment, the installer function 214 can then deploy the newly composed service to an execution server (or servers) 220 for future execution and notify the verifier function 210 to update the dependencies in the UDDI registry 212 (or other appropriate database(s)). In the case where the composed service is an upgrade to an existing composed service, the installer 214 may inform the appropriate physical communication node(s) that new sessions should use the new code associated with the composed service. Additionally, the installer function 214 can monitor the physical communication node(s) so that older versions of the service composition may be removed from service when all sessions using the older version are terminated.
Once the composed service has been deployed by the installer function 214, the coordinator function 204 can notify the activator function 216 that the deployed composed service is ready for activation. The activation function 216 can then activate the deployed composed service for all subscribers or a desired subset of subscribers. For example, the newly deployed composed service could be activated for a group of test subscribers to verify that the composed service works as intended in the production environment. The activation function 216 then notifies the selection function 218, which in turn notifies the execution server(s) 220, of the composed service to activate. The activation request is sent from the activation function 216, and can be translated from the protocol used by the activation function, e.g., session initiation protocol (SIP) or hyper-text transfer protocol (HTTP), into another protocol, e.g., simple object action protocol (SOAP), under control of the selection function 218 for invoking the desired composed service from among the set of composed services located on or accessible by the desired execution server(s) 220. Additionally, according to one exemplary embodiment, the activator function 216 and the selector function 218 can be collocated with the execution server 220.
As described above, code constructs can be used at the IDE 202 for creating composed services. According to exemplary embodiments, the architecture used for creating composed services can be described as a hybrid approach which can automatically generate and compile code at the IDE 202 prior to sending the composed service to the coordinator 204. The visual language(s) used can include a set of graphical constructs, e.g., loops and tests, as well as macros that correspond to fragment code templates. This allows for the reuse of previously created code as well as the generation of new customized code for creating a composed service.
According to exemplary embodiments, a composed service can be based on visual constructs which describe one or more operations as shown in
As shown in
Using the service composition example Findme 402, an onInvite operation is executed when a SIP INVITE message is received. With this composed service, one can, for example, retrieve presence list information from a presence web service and then call, e.g., send a SIP INVITE, various online devices one after the other if a SIP response is not established. While not shown in
According to exemplary embodiments, as described above, composed services can reuse other composed services (or operations) which can, in turn, shorten the deployment time of the newly composed service.
According to exemplary embodiments, the MSCF 200 can also use, as desired, other concepts and processes in support of service composition and/or the service composition architecture. For example, the service composition architecture can support all service creation life cycle phases and the interfaces provided are typically reusable. Also, the service composition architecture can manipulate similar types of entities uniformly. Additionally, real time services typically have constraints upon them in terms of response times, and service composition time (to aggregate code fragments together and have it validated), as well as other constraints as imposed by operator networks and physical limitations, therefore, the service composition architecture according to these exemplary embodiments can ensure that the composed services are within desired limitations in order to respect these constraints, e.g., ensure that composed services stay within known Quality of Service (QoS) requirements.
The exemplary embodiments described above provide methods and systems for composing services for converged networks using a multimedia service composition factory 200. Communications node 600 can contain a processor 602 (or multiple processor cores), memory 604, one or more secondary storage devices 606 and a communications interface 608. Communications node 600 is capable of processing instructions in support of performing the duties of any (or all) of the functions associated with the multimedia service composition factory 200. For example, in the role of the coordinator function, processor 602 can process the instructions required to push a composed service (which starts as a pre-compiled code segment from the IDE 202) through the other functions to result in a deployed composed service. As another example, the communications node 600 could include the functions of the designer, implementer and coordinator in a single location using various stored instructions and processor(s) to perform these functions, e.g., verifying syntax and compiling the final composed service.
Utilizing the above-described exemplary systems according to exemplary embodiments, a method for composing a service is shown in the flowchart of
Utilizing the above-described exemplary systems according to exemplary embodiments, another method for composing a service is shown in the flowchart of
As also will be appreciated by one skilled in the art, the exemplary embodiments may be embodied in, for example, a computing arrangement, a server, a wireless communication device, a telecommunication network, as a method or in a computer program product. Accordingly, the exemplary embodiments may take the form of an entirely hardware embodiment, an embodiment combining hardware and software aspects, or a purely software embodiment. Further, the exemplary embodiments may take the form of a computer program product stored on a computer-readable storage medium having computer-readable instructions embodied in the medium. Any suitable computer readable medium may be utilized including hard disks, CD-ROMs, digital versatile disc (DVD), optical storage devices, or magnetic storage devices such a floppy disk or magnetic tape. Other non-limiting examples of computer readable media include flash-type memories or other known memories.
Although the features and elements of the present exemplary embodiments are described in the embodiments in particular combinations, each feature or element can be used alone without the other features and elements of the embodiments or in various combinations with or without other features and elements disclosed herein. The methods or flow charts provided in the present application may be implemented in a computer program, software, or firmware tangibly embodied in a computer-readable storage medium for execution by a general purpose computer or a processor.
The above-described exemplary embodiments are intended to be illustrative in all respects, rather than restrictive, of the present invention. Thus the present invention is capable of many variations in detailed implementation that can be derived from the description contained herein by a person skilled in the art. All such variations and modifications are considered to be within the scope and spirit of the present invention as defined by the following claims. For example, the GUI associated with the IDE 202 could be web based allowing access from a web browser. No element, act, or instruction used in the description of the present application should be construed as critical or essential to the invention unless explicitly described as such. Also, as used herein, the article “a” is intended to include one or more items.
The present application is related to, and claims priority from, the U.S. Provisional Patent Application Ser. No. 61/118,530, entitled “Multimedia Service Composition Factory in NGI”, and filed on Nov. 28, 2008, the disclosure of which is incorporated herein by reference.
Number | Date | Country | |
---|---|---|---|
61118530 | Nov 2008 | US |