US20010014151A1 - Feature implementation and provisioning by injection - Google Patents
Feature implementation and provisioning by injection Download PDFInfo
- Publication number
- US20010014151A1 US20010014151A1 US09/779,253 US77925301A US2001014151A1 US 20010014151 A1 US20010014151 A1 US 20010014151A1 US 77925301 A US77925301 A US 77925301A US 2001014151 A1 US2001014151 A1 US 2001014151A1
- Authority
- US
- United States
- Prior art keywords
- feature
- features
- code base
- registry
- call
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04Q—SELECTING
- H04Q3/00—Selecting arrangements
- H04Q3/42—Circuit arrangements for indirect selecting controlled by common circuits, e.g. register controller, marker
- H04Q3/54—Circuit arrangements for indirect selecting controlled by common circuits, e.g. register controller, marker in which the logic circuitry controlling the exchange is centralised
- H04Q3/545—Circuit arrangements for indirect selecting controlled by common circuits, e.g. register controller, marker in which the logic circuitry controlling the exchange is centralised using a stored programme
- H04Q3/54508—Configuration, initialisation
- H04Q3/54525—Features introduction
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04M—TELEPHONIC COMMUNICATION
- H04M3/00—Automatic or semi-automatic exchanges
- H04M3/42—Systems providing special services or facilities to subscribers
- H04M3/42136—Administration or customisation of services
- H04M3/4217—Managing service interactions
Definitions
- the present invention relates generally to the field of communications and more specifically to a system and method for feature implementation and provisioning in a call processing environment.
- More recent telephony system architectures including Private Branch Exchanges (PBX), key systems, and telephony servers provide call processing to control and route the call, and provide the call features implemented within a code base embodied in the hardware, firmware, software, or some combination thereof.
- PBX Private Branch Exchanges
- key systems key systems
- telephony servers provide call processing to control and route the call, and provide the call features implemented within a code base embodied in the hardware, firmware, software, or some combination thereof.
- call block Some call features are well known in the art, such as call block, call waiting, three-way calling, however new call features are continually being developed and implemented by telephony system developers and manufacturers.
- One prior art method of introducing new features into call processing, while limiting changes to the code base uses feature hooks. This method de-couples the feature implementation and interactions from the code base.
- the provisioning of features in this prior art method is controlled by binding feature hooks in the code base to the associated feature code or by flags (e.g. Feature-Allowed-Night-Services).
- this prior art method still requires changes to the code base to handle new features (inserting appropriate feature hooks). Interactions between features also require specialized feature hooks or changes to the code base. Making changes to the code base itself requires the telephony system to be shut down, is time consuming, and can be destabilizing if not properly implemented.
- a second prior art method uses the Advanced Intelligent Networking (AIN) model.
- the code base is programmed to signal interested features when an event occurs and allows the features to respond as required.
- Features that act on the same signal may negotiate as peers or submit to arbitration.
- feature interactions are handled without requiring changes to the code base.
- Drawbacks of this model include the performance impact associated with signaling of interested features, and non-deterministic event handling with inconsistent outcomes.
- An aspect is defined with respect to a system and general purpose language, as a property that must be implemented and “cannot be cleanly encapsulated in a generalized procedure”.
- Aspect-Oriented programming each aspect is identified and coded as a separate program. These programs are distinct from regular general-purpose language component programs.
- a specialized compiler referred to as an “aspect weaver”, accepts aspect programs and regular components as input and generates an implementation that integrates them together. This fusion of code results in an executable that is different from the implementation in the sense that when a developer reviews the executable for the purpose of rouble shooting, it is not recognizable from the original program.
- the ability to maintain the system is compromised and new risks due to the exposure to the new type of compiler are also introduced.
- the present invention is directed to providing a stable, efficient and effective system and method of implementing and provisioning features and thereby providing feature services in a call processing environment where features may be introduced, changed or removed without destabilizing the code base.
- features are fully implemented outside the code base.
- Features are introduced or “injected” into the call processing environment using a feature registry.
- the feature registry is used to manage feature configuration, behavior and interactions.
- the code base references the feature registry to apply features during operation. In this manner, features can be implemented by reference without modification or rebuilding of the code base.
- Features can be added, modified or removed without requiring a system upgrade, even while the code base is in operation.
- the code base uses a structured framework into which features can be introduced by reference using the feature registry.
- a feature service manager exclusively controls the feature registry and handles provisioning of features. Feature interaction potential is identified and resolved during feature provisioning.
- the feature service manager can be configured to enforce feature integrity and behaviour rules specific to the call processing product being provisioned.
- a system for providing call features in a call processing environment comprising: (a) a code base; (b) a feature registry connected to the code base for describing features; and (c) a feature service manager, coupled to the feature registry for managing the feature registry, wherein the features are introduced for application by code base by reference.
- a method for providing call features in a call processing environment comprising the steps of: (a) creating a structured framework for describing call features; (b) instrumenting a code base according to the framework; (c) establishing a feature registry for storing instances of the features corresponding to the framework, separately connected to said code base; and (d) creating a feature service manager, coupled to the feature registry for managing the feature registry, wherein the instances of the features managed by the feature service manager are implemented by the code base by reference to the feature registry.
- FIG. 1 is a diagrammatic overview of communications system of a call processing environment employing the present invention
- FIG. 2 is a diagrammatic representation of components within the call processing environment of FIG. 1.
- FIG. 1 provides a diagrammatic overview illustrating a preferred embodiment of the present invention within communications system 100 .
- the communications system 100 is broadly defined to allow communications of various forms, including voice, email, fax, etc. between users. Users may be individuals or, alternatively, may be grouped into entities, such as companies, divisions or any such other type of organization, and the communication system 100 includes connections internal and external to the entity or organization.
- the communications system 100 typically contains a call processing environment 102 for the processing of communications within the entity and call features and feature services are provided within the call processing environment 102 .
- the call processing environment 102 of communications system 100 is typically employed within a business unit, department or optionally may include the entire organization or entity.
- the communications system 100 contains numerous devices which can be used to generate, receive, store and communicate messages of various types, which may include voice, email, and facsimile communications.
- call processing environment 102 processes communications of various communications devices within the entity.
- communications devices are telephones 104 .
- the communications devices within the entity are not limited to telephones 104 , but may include a computing device, printer, fax machine or any communications devices which can send or receive audio, visual, textual, graphical or any other type of information.
- the communication device such as telephone 104 is a standard analog or digital device with an appropriate user interface as is well known in the art.
- Call processing environment 102 includes one or more call processing devices, that either individually or cooperatively, interact with or employ a code base 106 to provide call processing functions.
- the code base 106 may be software, firmware, hardware, or some combination thereof. In the preferred embodiment, processes running on call processing devices interact with the code base to provide call processing functions.
- Call processing devices may be one or more of the typical telephony processing devices such as are well known in the art (not shown), including a Private Branch Exchange (PBX), a key system, phone hub, computer, communications server, messaging server, or data stored in a database managed by data management and control process.
- PBX Private Branch Exchange
- the code base 106 may be embodied in, or distributed among, one or more of the call processing devices.
- Communications system 100 may also include a gateway (not shown) for connecting the call processing environment 102 to the external environment such as a Public Switched Telephone Network or Wide Area Network (PSTN/WAN) 108 .
- the gateway facilitates communications with the outside world, and may include connections to the Internet.
- PSTN/WAN 108 users external to the entity, using communications devices such as telephones 110 can communicate with users through call processing environment 102 .
- the communications devices and call processing devices of call processing environment 102 may be interconnected by a Local Area Network (not shown).
- the call processing environment 102 is used to route calls and provide features and feature services utilizing the code base 106 . Calls may be internal to the organization, or may originate or terminate remotely. The functions of the call processing devices may be performed by separate devices, or one or more of their functions may be integrated or combined into a single device.
- FIG. 2 a preferred embodiment of a call processing environment of FIG. 1 is shown in further detail.
- FIG. 2 illustrates how features are provisioned in the call processing environment 200 .
- Code base 202 may be embodied in hardware, firmware or software of a call processing device as previously described with respect to FIG. 1.
- Features supported by the code base 202 are fully implemented separately from the code base 202 .
- This architecture enables feature implementation to be performed independent of the code base as well as externally, if desired.
- An important characteristic of the code base 202 is that features are supported by the code base 202 by reference without any modification to the code base 202 .
- the code base 202 is instrumented with a contractual interface specification or framework into which aspects of a feature can be introduced.
- the code base 202 works with the framework to reference feature aspects using a feature registry 204 .
- the code base 202 consults the feature registry 204 to implement a feature.
- features may be added, modified, and deleted without requiring a system upgrade and without jeopardizing the code base 202 itself.
- Features can be added, modified or removed while the code base 202 is in operation without the need to have the code base 202 taken down, modified, or rebuilt. This results in feature implementation that is fast and robust.
- the framework can be enhanced over time to support additional feature aspects (e.g. a versioning mechanism can be applied).
- features are generically described and structured in the framework in terms of feature aspects. These feature aspects are components of the framework into which a feature can be partitioned. Feature aspects are implemented separately conforming to the requirements of the framework. The framework also dictates how these aspects are applied by the code base 202 during operation, and feature aspects can also be qualified by the “system state” in which they apply. Not all aspects need to be present in a feature.
- feature aspect and code base implementation is dependent on the programming language and interface of the code base 202 . Any appropriate programming language such as is well known in the art may be used.
- feature aspect implementation and code base is programmed in the C++ programming language using Common Object Model (COM) programming.
- Program code may be stored in the feature registry 204 in macro, programming language or executable form.
- the feature registry 204 is used to manage feature configuration, behavior and feature interactions.
- the feature registry 204 reflects the interface requirements of the framework. When a feature aspect is placed in the feature registry 204 , it becomes immediately available to the code base 202 .
- the code base 202 references the feature registry 204 to apply features during operation. All of the information, instructions and data necessary for the feature aspect is stored in the feature registry 204 .
- Features are introduced into the call processing environment 200 by injection into the feature registry 204 .
- the feature registry 204 may be populated by any mechanism, whether static or dynamic (not only a feature service manager 206 such as discussed in greater detail below). Advanced data management techniques can also be applied to the feature registry 204 to improve system performance (e.g. statistical optimizations or data caching).
- Feature service manager 206 exclusively controls the feature registry 204 and handles provisioning of features.
- the feature service manager 206 “injects” feature aspects by populating the feature registry 204 .
- Feature interaction conflict is identified and potentially resolved during feature provisioning by the feature service manager 206 .
- the feature service manager 206 is configured to enforce feature integrity and behavioral rules specific to the product feature being provisioned.
- the feature registry 204 and feature service manager 206 may be implemented as a process and associated database on a call processing device within the call processing environment 200 .
- feature aspects could include, but are not limited to:
- configuration is the feature aspect of the framework that relates to how to set up a particular feature.
- User interface is the feature aspect that relates to the actions and activities on the user interface of a communications device necessary for a user to activate, manage and deactivate a feature.
- Validation criteria is the feature aspect that represents the criteria which are evaluated to determine if the feature applies.
- Activation criteria is the feature aspect that represents the criteria which are evaluated to determine if the feature behavior should be activated.
- Behavior is the feature aspect that represents the action performed when the activation criteria are met.
- Exception handling is the feature aspect representing the activity that is performed when an exception occurs.
- the code base 202 accesses the feature registry 204 to determine the valid features at each system state transition.
- Features are configured in categories, such as User, Device Type, etc.
- the activation aspect is applied.
- the behaviour aspect is applied. Additional aspects may be conditionally applied in sequence according to the framework implemented in the code base 202 .
- the code associated with configuration for the Call Block feature is implemented in C++ by a CALL-BLOCK::Configuration::Configure-User() member function.
- This function implements the allocation and initialization of a Call Block List with twenty entries.
- the Call Block List is also associated with a user (in context) of the User category.
- the feature service manager 206 uses the feature implementation described above to identify that a configuration aspect of the feature is associated with a particular User configuration. This is accomplished through the naming convention by associating a numeric or alphanumeric name for each user.
- a C++ function reference to invoke the member function CALL BLOCK::Configuration::Configure-User() is added to the list of configuration function references in the User sub-section of the feature registry 204 .
- CALL-BLOCK when the user state is Call Presented the validation aspect of CALL-BLOCK is true.
- the activation aspect of CALL-BLOCK is applied which checks if the Caller Identity (in context) is in the Call Block List. If the activation aspect of CALL-BLOCK is also true the behaviour is applied and the call is rejected.
- the code base 202 applies successive entries in the feature registry 204 as defined by the framework.
- a single category of the feature registry 204 applies to each category of system state change. These categories reflect an Object Oriented design of the code base.
- feature aspects may also include non-programming but related specifications, such as:
- the present invention may also be adapted for use in other software systems.
- the feature service manager and feature registry may be used to introduce features into any stable code base in any software system, including software systems outside of the context of a call processing environment, such as a personal computer system, mainframe computer system, embedded controller or such other software, firmware or hardware based system.
Abstract
Description
- The present invention relates generally to the field of communications and more specifically to a system and method for feature implementation and provisioning in a call processing environment.
- Early forms of telephony systems of the prior art were mechanically driven using mechanical components. When a telephone call was placed using one of these early forms of telephony systems, few, if any features, were associated or available with the call. With advances in technology, not only the quality and efficiency of prior art systems improved, but also the capability of such systems to provide additional call features was enabled. This was primarily due to the evolution of traditional telephony systems from a mechanical architecture to an electronic architecture. With an electronic architecture, additional call features were facilitated in these prior art systems in hardware, firmware or software, usually under some form of processor or microprocessor based control. Thus the handling of a call, with its associated call features evolved into call processing.
- More recent telephony system architectures, including Private Branch Exchanges (PBX), key systems, and telephony servers provide call processing to control and route the call, and provide the call features implemented within a code base embodied in the hardware, firmware, software, or some combination thereof.
- Some call features are well known in the art, such as call block, call waiting, three-way calling, however new call features are continually being developed and implemented by telephony system developers and manufacturers.
- Introducing new features into a typical prior art call processing environment requires numerous changes distributed throughout the code base. These changes are necessary to address different aspects of the features, such as the user interface, feature validation, feature activation, feature interaction and state specific behaviours.
- Interactions between features can be complicated and are often handled specifically in the code base where the feature is implemented. Additional code base changes must be introduced to the code base to manage specific interactions, as required to deal with each possible combination of feature interaction. The code base then becomes the only accurate record of how feature interactions are handled.
- Over time, changes to the code base causes the code base to become increasingly destabilized as more and more features are added and modified.
- One prior art method of introducing new features into call processing, while limiting changes to the code base, uses feature hooks. This method de-couples the feature implementation and interactions from the code base. The provisioning of features in this prior art method is controlled by binding feature hooks in the code base to the associated feature code or by flags (e.g. Feature-Allowed-Night-Services). However, this prior art method still requires changes to the code base to handle new features (inserting appropriate feature hooks). Interactions between features also require specialized feature hooks or changes to the code base. Making changes to the code base itself requires the telephony system to be shut down, is time consuming, and can be destabilizing if not properly implemented.
- A second prior art method uses the Advanced Intelligent Networking (AIN) model. The code base is programmed to signal interested features when an event occurs and allows the features to respond as required. Features that act on the same signal may negotiate as peers or submit to arbitration. In this prior art method feature interactions are handled without requiring changes to the code base. Drawbacks of this model include the performance impact associated with signaling of interested features, and non-deterministic event handling with inconsistent outcomes.
- A further prior art method is set forth in Aspect-Oriented Programming by Gregor Kiczales, John Lamping, Anurag Mendhekar, Chris Maeda, Cristina Videira Lopes, Jean-Marc Loingtier and John Irwin in Proceedings of the European Conference on Object-Oriented Programming (ECOOP), Finland, Springer-Verlag LNCS 1241, June 1997, which, at the time of this specification, was available at http://www.parc.xerox.com/cs1/groups/sda/publications/papers/Kiczales-ECOOP97/. An aspect is defined with respect to a system and general purpose language, as a property that must be implemented and “cannot be cleanly encapsulated in a generalized procedure”. In Aspect-Oriented programming, each aspect is identified and coded as a separate program. These programs are distinct from regular general-purpose language component programs. A specialized compiler referred to as an “aspect weaver”, accepts aspect programs and regular components as input and generates an implementation that integrates them together. This fusion of code results in an executable that is different from the implementation in the sense that when a developer reviews the executable for the purpose of rouble shooting, it is not recognizable from the original program. However, in this method, the ability to maintain the system is compromised and new risks due to the exposure to the new type of compiler are also introduced.
- There is a requirement in the art for a stable, efficient and effective system and method of call processing feature implementation and provisioning where features may be introduced, changed or removed without destabilizing the code base.
- The present invention is directed to providing a stable, efficient and effective system and method of implementing and provisioning features and thereby providing feature services in a call processing environment where features may be introduced, changed or removed without destabilizing the code base. In the inventive system and method, features are fully implemented outside the code base. Features are introduced or “injected” into the call processing environment using a feature registry. The feature registry is used to manage feature configuration, behavior and interactions. The code base references the feature registry to apply features during operation. In this manner, features can be implemented by reference without modification or rebuilding of the code base. Features can be added, modified or removed without requiring a system upgrade, even while the code base is in operation. The code base uses a structured framework into which features can be introduced by reference using the feature registry. A feature service manager exclusively controls the feature registry and handles provisioning of features. Feature interaction potential is identified and resolved during feature provisioning. The feature service manager can be configured to enforce feature integrity and behaviour rules specific to the call processing product being provisioned.
- Therefore, according to one aspect of the present invention there is provided a system for providing call features in a call processing environment comprising: (a) a code base; (b) a feature registry connected to the code base for describing features; and (c) a feature service manager, coupled to the feature registry for managing the feature registry, wherein the features are introduced for application by code base by reference.
- Also, according to another aspect of the present invention there is provided a method for providing call features in a call processing environment comprising the steps of: (a) creating a structured framework for describing call features; (b) instrumenting a code base according to the framework; (c) establishing a feature registry for storing instances of the features corresponding to the framework, separately connected to said code base; and (d) creating a feature service manager, coupled to the feature registry for managing the feature registry, wherein the instances of the features managed by the feature service manager are implemented by the code base by reference to the feature registry.
- An embodiment of the present invention will now be described more fully with reference to the accompanying drawings in which:
- FIG. 1 is a diagrammatic overview of communications system of a call processing environment employing the present invention;
- FIG. 2 is a diagrammatic representation of components within the call processing environment of FIG. 1.
- FIG. 1 provides a diagrammatic overview illustrating a preferred embodiment of the present invention within
communications system 100. Thecommunications system 100 is broadly defined to allow communications of various forms, including voice, email, fax, etc. between users. Users may be individuals or, alternatively, may be grouped into entities, such as companies, divisions or any such other type of organization, and thecommunication system 100 includes connections internal and external to the entity or organization. Thecommunications system 100 typically contains acall processing environment 102 for the processing of communications within the entity and call features and feature services are provided within thecall processing environment 102. Thecall processing environment 102 ofcommunications system 100 is typically employed within a business unit, department or optionally may include the entire organization or entity. - The
communications system 100 contains numerous devices which can be used to generate, receive, store and communicate messages of various types, which may include voice, email, and facsimile communications. In a preferred embodiment, callprocessing environment 102 processes communications of various communications devices within the entity. In the most common implementation, communications devices aretelephones 104. The communications devices within the entity are not limited totelephones 104, but may include a computing device, printer, fax machine or any communications devices which can send or receive audio, visual, textual, graphical or any other type of information. - In a preferred embodiment, the communication device, such as
telephone 104 is a standard analog or digital device with an appropriate user interface as is well known in the art. - Call
processing environment 102 includes one or more call processing devices, that either individually or cooperatively, interact with or employ acode base 106 to provide call processing functions. Thecode base 106 may be software, firmware, hardware, or some combination thereof. In the preferred embodiment, processes running on call processing devices interact with the code base to provide call processing functions. Call processing devices may be one or more of the typical telephony processing devices such as are well known in the art (not shown), including a Private Branch Exchange (PBX), a key system, phone hub, computer, communications server, messaging server, or data stored in a database managed by data management and control process. Thecode base 106 may be embodied in, or distributed among, one or more of the call processing devices. -
Communications system 100 may also include a gateway (not shown) for connecting thecall processing environment 102 to the external environment such as a Public Switched Telephone Network or Wide Area Network (PSTN/WAN) 108. The gateway facilitates communications with the outside world, and may include connections to the Internet. Through the PSTN/WAN 108, users external to the entity, using communications devices such astelephones 110 can communicate with users throughcall processing environment 102. - The communications devices and call processing devices of
call processing environment 102 may be interconnected by a Local Area Network (not shown). - The
call processing environment 102 is used to route calls and provide features and feature services utilizing thecode base 106. Calls may be internal to the organization, or may originate or terminate remotely. The functions of the call processing devices may be performed by separate devices, or one or more of their functions may be integrated or combined into a single device. - Turning to FIG. 2, a preferred embodiment of a call processing environment of FIG. 1 is shown in further detail. FIG. 2 illustrates how features are provisioned in the call processing environment200.
- Call processing in call processing environment200 is under general management and control of
code base 202.Code base 202 may be embodied in hardware, firmware or software of a call processing device as previously described with respect to FIG. 1. Features supported by thecode base 202 are fully implemented separately from thecode base 202. This architecture enables feature implementation to be performed independent of the code base as well as externally, if desired. An important characteristic of thecode base 202 is that features are supported by thecode base 202 by reference without any modification to thecode base 202. Thecode base 202 is instrumented with a contractual interface specification or framework into which aspects of a feature can be introduced. Thecode base 202 works with the framework to reference feature aspects using afeature registry 204. - Using the aforenoted framework, the
code base 202 consults thefeature registry 204 to implement a feature. In this manner, features may be added, modified, and deleted without requiring a system upgrade and without jeopardizing thecode base 202 itself. Features can be added, modified or removed while thecode base 202 is in operation without the need to have thecode base 202 taken down, modified, or rebuilt. This results in feature implementation that is fast and robust. The framework can be enhanced over time to support additional feature aspects (e.g. a versioning mechanism can be applied). - Features are generically described and structured in the framework in terms of feature aspects. These feature aspects are components of the framework into which a feature can be partitioned. Feature aspects are implemented separately conforming to the requirements of the framework. The framework also dictates how these aspects are applied by the
code base 202 during operation, and feature aspects can also be qualified by the “system state” in which they apply. Not all aspects need to be present in a feature. - The syntax of feature aspect and code base implementation is dependent on the programming language and interface of the
code base 202. Any appropriate programming language such as is well known in the art may be used. In a preferred embodiment, the feature aspect implementation and code base is programmed in the C++ programming language using Common Object Model (COM) programming. Program code may be stored in thefeature registry 204 in macro, programming language or executable form. - The
feature registry 204 is used to manage feature configuration, behavior and feature interactions. Thefeature registry 204 reflects the interface requirements of the framework. When a feature aspect is placed in thefeature registry 204, it becomes immediately available to thecode base 202. Thecode base 202 references thefeature registry 204 to apply features during operation. All of the information, instructions and data necessary for the feature aspect is stored in thefeature registry 204. Features are introduced into the call processing environment 200 by injection into thefeature registry 204. - The
feature registry 204 may be populated by any mechanism, whether static or dynamic (not only a feature service manager 206 such as discussed in greater detail below). Advanced data management techniques can also be applied to thefeature registry 204 to improve system performance (e.g. statistical optimizations or data caching). - Feature service manager206 exclusively controls the
feature registry 204 and handles provisioning of features. The feature service manager 206 “injects” feature aspects by populating thefeature registry 204. Feature interaction conflict is identified and potentially resolved during feature provisioning by the feature service manager 206. The feature service manager 206 is configured to enforce feature integrity and behavioral rules specific to the product feature being provisioned. - The
feature registry 204 and feature service manager 206 may be implemented as a process and associated database on a call processing device within the call processing environment 200. - The operation of the framework and utilization of feature aspects is further illustrated by way of example. For the purposes of this example, feature aspects could include, but are not limited to:
- Configuration
- User interface
- Validation criteria
- Activation criteria
- Behaviour
- Exception handling
- In this example, configuration is the feature aspect of the framework that relates to how to set up a particular feature. User interface is the feature aspect that relates to the actions and activities on the user interface of a communications device necessary for a user to activate, manage and deactivate a feature. Validation criteria is the feature aspect that represents the criteria which are evaluated to determine if the feature applies. Activation criteria is the feature aspect that represents the criteria which are evaluated to determine if the feature behavior should be activated. Behavior is the feature aspect that represents the action performed when the activation criteria are met. Exception handling is the feature aspect representing the activity that is performed when an exception occurs.
- During operation, the
code base 202 accesses thefeature registry 204 to determine the valid features at each system state transition. Features are configured in categories, such as User, Device Type, etc. Upon instantiation of an item in a specific category, for example, a new User, all configuration aspects in the category of thefeature registry 204 are applied. Subsequently, if a feature is valid on state transition, the activation aspect is applied. In turn, if the feature is active, the behaviour aspect is applied. Additional aspects may be conditionally applied in sequence according to the framework implemented in thecode base 202. - For further illustration a Call Block feature is set forth below, The feature aspects of a Call Block feature include:
Configuration: For each User Call Block List of Caller Identities maximum Number of Blocked Callers = 20 User interface: Enable/Disable Call Block (code:<Adds/Removes Caller Identity from Call Block List>) Validation: User state is Call Presented Activation: Caller identity is in Call Block List Behaviour: Reject Caller - In this example, the code associated with configuration for the Call Block feature is implemented in C++ by a CALL-BLOCK::Configuration::Configure-User() member function. This function implements the allocation and initialization of a Call Block List with twenty entries. The Call Block List is also associated with a user (in context) of the User category.
- The feature service manager206 uses the feature implementation described above to identify that a configuration aspect of the feature is associated with a particular User configuration. This is accomplished through the naming convention by associating a numeric or alphanumeric name for each user. A C++ function reference to invoke the member function CALL BLOCK::Configuration::Configure-User() is added to the list of configuration function references in the User sub-section of the
feature registry 204. For example, this entry in the feature registry might be in any position in the list and is referenced as FEATURE-REGISTRY::USER::Configuration::Entry[CALL-BLOCK=40](). All other aspects are added to the feature registry similarly. - In this example, when the user state is Call Presented the validation aspect of CALL-BLOCK is true. The activation aspect of CALL-BLOCK is applied which checks if the Caller Identity (in context) is in the Call Block List. If the activation aspect of CALL-BLOCK is also true the behaviour is applied and the call is rejected.
- For further illustration, this may be implemented in pseudocode as shown below:
- <User state changed to Call Presented>
- FOR EACH FEATURE IN feature registry DO
- IF FEATURE-REGISTRY::USER::Validation::Entry[FEATURE] AND
- FEATURE-REGISTRY::USER::Activation::Entry[FEATURE] THEN
- FEATURE-REGISTRY::USER::Behaviour::Entry[FEATURE]
- ENDIF
- ENDFOR
- The
code base 202 applies successive entries in thefeature registry 204 as defined by the framework. A single category of thefeature registry 204 applies to each category of system state change. These categories reflect an Object Oriented design of the code base. - In alternate embodiments (not shown), feature aspects may also include non-programming but related specifications, such as:
- Definition
- Usage
- Examples
- Terms
- Troubleshooting suggestions
- These related specifications are useful for feature development and support activities such as the generation of accompanying documentation. Injection of these feature aspects into the call processing environment also simplifies and improves the maintainability of the software system.
- The present invention may also be adapted for use in other software systems. In particular, the feature service manager and feature registry may be used to introduce features into any stable code base in any software system, including software systems outside of the context of a call processing environment, such as a personal computer system, mainframe computer system, embedded controller or such other software, firmware or hardware based system.
- Although the invention has been described in terms of the preferred and several alternate embodiments described herein, those skilled in the art will appreciate other embodiments and modifications which can be made without departing from the sphere and scope of the teachings of the invention. All such modifications are intended to be included within the scope of the claims appended hereto.
Claims (11)
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB0002743.3 | 2000-02-07 | ||
GB0002743A GB2358988B (en) | 2000-02-07 | 2000-02-07 | Feature implementation and provisioning by injection |
Publications (2)
Publication Number | Publication Date |
---|---|
US20010014151A1 true US20010014151A1 (en) | 2001-08-16 |
US6456707B2 US6456707B2 (en) | 2002-09-24 |
Family
ID=9885083
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US09/779,253 Expired - Lifetime US6456707B2 (en) | 2000-02-07 | 2001-02-07 | Feature implementation and provisioning by injection |
Country Status (3)
Country | Link |
---|---|
US (1) | US6456707B2 (en) |
CA (1) | CA2334432C (en) |
GB (1) | GB2358988B (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150023486A1 (en) * | 2005-06-30 | 2015-01-22 | Emc Corporation | Telephonic communication redirection and compliance processing |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2006051013A2 (en) * | 2004-11-15 | 2006-05-18 | Siemens Aktiengesellschaft | Method for manipulating software-tests |
US20070234308A1 (en) * | 2006-03-07 | 2007-10-04 | Feigenbaum Barry A | Non-invasive automated accessibility validation |
US20080141335A1 (en) * | 2006-12-08 | 2008-06-12 | Novell, Inc. | Provisioning software with policy-appropriate capabilities |
US8850412B2 (en) * | 2008-07-01 | 2014-09-30 | Oracle International Corporation | System and method for using aspects to generate event data records |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5343517A (en) * | 1991-10-31 | 1994-08-30 | At&T Bell Laboratories | Use-code based call-treatment selection |
US5404396A (en) * | 1993-08-27 | 1995-04-04 | Telefonaktiebolaget Lm Ericsson | Feature interaction manager |
US5717747A (en) * | 1996-05-31 | 1998-02-10 | Lucent Technologies Inc. | Arrangement for facilitating plug-and-play call features |
US6080202A (en) * | 1997-07-10 | 2000-06-27 | Nortel Networks Corporation | Universal compatibility software system for services in communication and information processing networks |
US5937048A (en) * | 1997-06-05 | 1999-08-10 | Bell Atlantic Network Services, Inc. | Program controlled switch provisioning |
-
2000
- 2000-02-07 GB GB0002743A patent/GB2358988B/en not_active Expired - Lifetime
-
2001
- 2001-02-07 US US09/779,253 patent/US6456707B2/en not_active Expired - Lifetime
- 2001-02-07 CA CA002334432A patent/CA2334432C/en not_active Expired - Lifetime
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150023486A1 (en) * | 2005-06-30 | 2015-01-22 | Emc Corporation | Telephonic communication redirection and compliance processing |
US9407759B2 (en) * | 2005-06-30 | 2016-08-02 | Emc Corporation | Telephonic communication redirection and compliance processing |
Also Published As
Publication number | Publication date |
---|---|
CA2334432A1 (en) | 2001-08-07 |
GB2358988A (en) | 2001-08-08 |
US6456707B2 (en) | 2002-09-24 |
GB0002743D0 (en) | 2000-03-29 |
CA2334432C (en) | 2004-05-11 |
GB2358988B (en) | 2004-03-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6445782B1 (en) | Service management system for use in communications | |
US5640319A (en) | Switch control methods and apparatus | |
US6889375B1 (en) | Method and system for application development | |
CN101433066B (en) | Providing a service framework at an endpoint | |
US7739325B1 (en) | Apparatus and method for extensible real-time workflows | |
Zave | A distributed alternative to finite-state-machine specifications | |
US20140130010A1 (en) | Paradigm in Multimedia Services Creation Methodology, and New Service Creation and Service Execution Environments | |
JP2000236393A (en) | Request distribution method and its device | |
US5615351A (en) | Method and system for correlating usage data in a distributed architecture | |
US20060020948A1 (en) | Real-time multi-modal business transformation interaction | |
Jonsson et al. | Incremental requirement specification for evolving systems | |
Griffeth et al. | Extending telecommunications systems: The feature-interaction problem | |
US6456707B2 (en) | Feature implementation and provisioning by injection | |
US8464210B1 (en) | Software development and testing environment | |
US6914969B2 (en) | Service logic execution environment for telecommunications service components | |
CN108769249A (en) | The high extended network framework and implementation method of iOS high-performance, server and medium | |
Capellmann et al. | Using high-level Petri nets in the field of intelligent networks | |
US8448159B2 (en) | Method and system for policy enabled programming | |
EP0940047B1 (en) | A service management system for use in communications | |
Bouma et al. | Formalisation of properties for feature interaction detection: Experience in a real-life situation | |
US6873695B2 (en) | Generic service component for voice processing services | |
US7680913B2 (en) | Mechanism to enforce availability preferences and needs of user resources hosted by telecommunication networks | |
WO1998023098A9 (en) | A service management system for use in communications | |
Lee et al. | Feature-oriented engineering of PBX software | |
Cornily et al. | Specifying distributed object applications using the reference model for Open Distributed Processing and the Unified Modeling Language |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: MITEL CORPORATION, CANADA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:ERB, PAUL;REEL/FRAME:011557/0133 Effective date: 20000519 |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
CC | Certificate of correction | ||
AS | Assignment |
Owner name: MITEL NETWORKS CORPORATION,CANADA Free format text: SECURITY AGREEMENT;ASSIGNOR:HIGHBRIDGE INTERNATIONAL LLC;REEL/FRAME:016345/0236 Effective date: 20050427 Owner name: MITEL NETWORKS CORPORATION, CANADA Free format text: SECURITY AGREEMENT;ASSIGNOR:HIGHBRIDGE INTERNATIONAL LLC;REEL/FRAME:016345/0236 Effective date: 20050427 |
|
AS | Assignment |
Owner name: BNY TRUST COMPANY OF CANADA, TRUST COMPANY OF CANA Free format text: SECURITY AGREEMENT;ASSIGNOR:MITEL NETWORKS CORPORATION, A CORPORATION OF CANADA;REEL/FRAME:016891/0959 Effective date: 20050427 |
|
FPAY | Fee payment |
Year of fee payment: 4 |
|
AS | Assignment |
Owner name: MITEL NETWORKS CORPORATION, CANADA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:MITEL KNOWLEDGE CORPORATION;REEL/FRAME:018132/0038 Effective date: 20021101 Owner name: MITEL KNOWLEDGE CORPORATION, CANADA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:MITEL CORPORATION;REEL/FRAME:018132/0001 Effective date: 20010215 |
|
AS | Assignment |
Owner name: MORGAN STANLEY & CO. INCORPORATED, NEW YORK Free format text: SECURITY AGREEMENT;ASSIGNOR:MITEL NETWORKS CORPORATION;REEL/FRAME:019817/0847 Effective date: 20070816 Owner name: MORGAN STANLEY & CO. INCORPORATED, NEW YORK Free format text: SECURITY AGREEMENT;ASSIGNOR:MITEL NETWORKS CORPORATION;REEL/FRAME:019817/0881 Effective date: 20070816 Owner name: MORGAN STANLEY & CO. INCORPORATED,NEW YORK Free format text: SECURITY AGREEMENT;ASSIGNOR:MITEL NETWORKS CORPORATION;REEL/FRAME:019817/0847 Effective date: 20070816 Owner name: MORGAN STANLEY & CO. INCORPORATED,NEW YORK Free format text: SECURITY AGREEMENT;ASSIGNOR:MITEL NETWORKS CORPORATION;REEL/FRAME:019817/0881 Effective date: 20070816 |
|
AS | Assignment |
Owner name: MITEL NETWORKS CORPORATION, CANADA Free format text: RELEASE & DISCHARGE OF SECURITY INTEREST;ASSIGNOR:HIGHBRIDGE INTERNATIONAL LLC/BNY TRUST COMPANY OF CANADA;REEL/FRAME:021794/0510 Effective date: 20080304 Owner name: MITEL NETWORKS CORPORATION,CANADA Free format text: RELEASE & DISCHARGE OF SECURITY INTEREST;ASSIGNOR:HIGHBRIDGE INTERNATIONAL LLC/BNY TRUST COMPANY OF CANADA;REEL/FRAME:021794/0510 Effective date: 20080304 |
|
FPAY | Fee payment |
Year of fee payment: 8 |
|
AS | Assignment |
Owner name: MITEL NETWORKS CORPORATION, CANADA Free format text: RELEASE OF SECURITY INTEREST IN PATENTS;ASSIGNOR:WILMINGTON TRUST, NATIONAL ASSOCIATION FKA WILMINGTON TRUST FSB/MORGAN STANLEY & CO. INCORPORATED;REEL/FRAME:030165/0776 Effective date: 20130227 |
|
AS | Assignment |
Owner name: BANK OF AMERICA, N.A., AS COLLATERAL AGENT, TEXAS Free format text: SECURITY AGREEMENT;ASSIGNOR:MITEL NETWORKS CORPORATION;REEL/FRAME:030186/0894 Effective date: 20130227 Owner name: WILMINGTON TRUST, N.A., AS SECOND COLLATERAL AGENT Free format text: SECURITY INTEREST;ASSIGNOR:MITEL NETWORKS CORPORATION;REEL/FRAME:030201/0743 Effective date: 20130227 |
|
AS | Assignment |
Owner name: MITEL NETWORKS CORPORATION, CANADA Free format text: RELEASE BY SECURED PARTY;ASSIGNORS:BANK OF NEW YORK MELLON, THE;MORGAN STANLEY & CO. INCORPORATED;MORGAN STANLEY SENIOR FUNDING, INC.;REEL/FRAME:030264/0470 Effective date: 20130227 |
|
AS | Assignment |
Owner name: MITEL NETWORKS CORPORATION, CANADA Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:WILMINGTON TRUST, NATIONAL ASSOCIATION;REEL/FRAME:032167/0464 Effective date: 20140131 Owner name: MITEL US HOLDINGS, INC., ARIZONA Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:WILMINGTON TRUST, NATIONAL ASSOCIATION;REEL/FRAME:032167/0464 Effective date: 20140131 |
|
AS | Assignment |
Owner name: MITEL US HOLDINGS, INC., ARIZONA Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:BANK OF AMERICA, N.A.;REEL/FRAME:032210/0245 Effective date: 20140131 Owner name: MITEL NETWORKS CORPORATION, CANADA Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:BANK OF AMERICA, N.A.;REEL/FRAME:032210/0245 Effective date: 20140131 |
|
AS | Assignment |
Owner name: JEFFERIES FINANCE LLC, AS THE COLLATERAL AGENT, NE Free format text: SECURITY AGREEMENT;ASSIGNORS:MITEL US HOLDINGS, INC.;MITEL NETWORKS CORPORATION;AASTRA USA INC.;REEL/FRAME:032264/0760 Effective date: 20140131 |
|
FPAY | Fee payment |
Year of fee payment: 12 |
|
AS | Assignment |
Owner name: MITEL US HOLDINGS, INC., ARIZONA Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:JEFFERIES FINANCE LLC, AS THE COLLATERAL AGENT;REEL/FRAME:035562/0157 Effective date: 20150429 Owner name: MITEL NETWORKS CORPORATION, CANADA Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:JEFFERIES FINANCE LLC, AS THE COLLATERAL AGENT;REEL/FRAME:035562/0157 Effective date: 20150429 Owner name: MITEL COMMUNICATIONS INC. FKA AASTRA USA INC., TEX Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:JEFFERIES FINANCE LLC, AS THE COLLATERAL AGENT;REEL/FRAME:035562/0157 Effective date: 20150429 |
|
AS | Assignment |
Owner name: BANK OF AMERICA, N.A.(ACTING THROUGH ITS CANADA BR Free format text: SECURITY INTEREST;ASSIGNOR:MITEL NETWORKS CORPORATION;REEL/FRAME:035783/0540 Effective date: 20150429 |
|
AS | Assignment |
Owner name: CITIZENS BANK, N.A., MASSACHUSETTS Free format text: SECURITY INTEREST;ASSIGNOR:MITEL NETWORKS CORPORATION;REEL/FRAME:042107/0378 Effective date: 20170309 |
|
AS | Assignment |
Owner name: MITEL (DELAWARE), INC., ARIZONA Free format text: RELEASE BY SECURED PARTY;ASSIGNORS:BANK OF AMERICA, N.A., AS COLLATERAL AGENT;BANK OF AMERICA, N.A., (ACTING THROUGH ITS CANADA BRANCH), AS CANADIAN COLLATERAL AGENT;REEL/FRAME:042244/0461 Effective date: 20170309 Owner name: MITEL US HOLDINGS, INC., ARIZONA Free format text: RELEASE BY SECURED PARTY;ASSIGNORS:BANK OF AMERICA, N.A., AS COLLATERAL AGENT;BANK OF AMERICA, N.A., (ACTING THROUGH ITS CANADA BRANCH), AS CANADIAN COLLATERAL AGENT;REEL/FRAME:042244/0461 Effective date: 20170309 Owner name: MITEL NETWORKS, INC., ARIZONA Free format text: RELEASE BY SECURED PARTY;ASSIGNORS:BANK OF AMERICA, N.A., AS COLLATERAL AGENT;BANK OF AMERICA, N.A., (ACTING THROUGH ITS CANADA BRANCH), AS CANADIAN COLLATERAL AGENT;REEL/FRAME:042244/0461 Effective date: 20170309 Owner name: MITEL NETWORKS CORPORATION, CANADA Free format text: RELEASE BY SECURED PARTY;ASSIGNORS:BANK OF AMERICA, N.A., AS COLLATERAL AGENT;BANK OF AMERICA, N.A., (ACTING THROUGH ITS CANADA BRANCH), AS CANADIAN COLLATERAL AGENT;REEL/FRAME:042244/0461 Effective date: 20170309 Owner name: MITEL COMMUNICATIONS, INC., TEXAS Free format text: RELEASE BY SECURED PARTY;ASSIGNORS:BANK OF AMERICA, N.A., AS COLLATERAL AGENT;BANK OF AMERICA, N.A., (ACTING THROUGH ITS CANADA BRANCH), AS CANADIAN COLLATERAL AGENT;REEL/FRAME:042244/0461 Effective date: 20170309 Owner name: MITEL BUSINESS SYSTEMS, INC., ARIZONA Free format text: RELEASE BY SECURED PARTY;ASSIGNORS:BANK OF AMERICA, N.A., AS COLLATERAL AGENT;BANK OF AMERICA, N.A., (ACTING THROUGH ITS CANADA BRANCH), AS CANADIAN COLLATERAL AGENT;REEL/FRAME:042244/0461 Effective date: 20170309 |
|
AS | Assignment |
Owner name: MITEL NETWORKS CORPORATION, CANADA Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:CITIZENS BANK, N.A.;REEL/FRAME:048096/0785 Effective date: 20181130 |
|
AS | Assignment |
Owner name: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT, NEW YORK Free format text: SECURITY INTEREST;ASSIGNOR:MITEL NETWORKS ULC;REEL/FRAME:047741/0674 Effective date: 20181205 Owner name: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT, NEW YORK Free format text: SECURITY INTEREST;ASSIGNOR:MITEL NETWORKS ULC;REEL/FRAME:047741/0704 Effective date: 20181205 Owner name: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLAT Free format text: SECURITY INTEREST;ASSIGNOR:MITEL NETWORKS ULC;REEL/FRAME:047741/0674 Effective date: 20181205 Owner name: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLAT Free format text: SECURITY INTEREST;ASSIGNOR:MITEL NETWORKS ULC;REEL/FRAME:047741/0704 Effective date: 20181205 |