The accompanying drawings, which constitute a part of the specification, illustrate embodiments of the invention, and may serve in connection with the description to explain principles of the invention.
In the drawings:
The embodiments of the invention described hereinafter are denoted a change notification agent (CNA). In the following, the term “object” is used to refer to a particular master data object (i.e., a physical Location, Location-Product, or Transportation Lane in the context of an application, for example a logistics application or a supply chain management environment.
The term B&A-Image—abbreviation for before- and after-Image—is used to refer to different Images in the process of changing an object that are communicated over the CNA.
In box 20, entries which are representative of data objects are registered. In the following box 30, entries representative of applications are registered. In the entries, the data objects are specified whose changes are relevant for the respective application.
Then, the agent is operable to receive notifications regarding registered data objects as to changes of the data objects, box 40.
Upon each receipt of such a notification by the agent, the program goes to box 50 where changed data from the notifying data object are requested.
Then, in box 60, the agent checks among the registered applications as to whether the change is relevant for the applications.
Each application for which the change has been determined to be relevant, is notified about the change, box 70.
Box 70 is followed by a box 80 of transmitting the relevant changed data to the application.
Finally, the notification and update process ends with box 90.
As it is clear from this description, boxes 10 to 40 concern the customization of the agent, while boxes 50 to 80 are the notification operations executed during run-time of agent and applications connected thereto. Notification operations 50 to 80 are repeated for every received notification. Therefore, the customization operations can be performed independently from the notification operations 50 to 80 (and vice versa). Once the customization has been completed, the notification operations are iteratively performed.
In a second embodiment of the invention, which is illustrated in
The object-oriented program environment may comprise data objects which are changed in dependency of other data objects. Such objects are denoted as sub-objects. These sub-objects may be registered with the agent as well.
A third embodiment of the invention deals with such sub-objects. According to this embodiment, transmission of the relevant changed sub-object data to the application is performed after the box 70 notifying the application about the changes. Again, the other boxes are the same as in the first and second embodiments described above.
In case that not all the changes of an object are relevant for each of the registered applications, the agent may maintain a list of fields of the respective data object whose changes are relevant for the respective application. Then, based on this list, an operation is performed to filter out data objects whose changes are not to be communicated to an application, prior to the operation of transmitting the relevant changed data to the application.
If a data object should make use of the CNA, the data object is registered with the CNA (refer to box 20) through the customizing part provided by in the framework. Hereto, a computer screen is presented to the developer where the relevant data concerning the object can be provided to the CNA. In the same way, the applications which are intended to make use of the CNA are registered through the customizing part provided by the invention.
As to the data to be provided at registration, an entry for an object comprises:
an ID representative of the data object;
an ID representative of the key of the data object;
a flag representative of activity;
an ID representative of the key structure of the data object;
an ID of the wrapper class.
An entry for a sub-object to an object comprises:
an ID representative of the sub-object;
an ID representative of the key data object;
an ID representative of the structure of the data object;
an ID representative of the object key object.
The sub-objects comprise object data with an additional key to the key object.
An entry for an application comprises:
an ID representative of the application;
a flag representative of activity;
an ID representative of the expected structure of notification.
The flag representative of the activity indicates whether the defined object is actually used or not. The wrapper class denotes the name of the class which the object or the application has programmed.
With the information structure the application decides implicitly what changes on which fields are relevant for an application.
With reference to
The sequence diagram of
The change notification from the data object to the CNA is performed in the following way:
The data object that wants to report changes creates an instance of the object specific implemented class CL_CNA_MD_XX 510 and hands over all relevant data to this instance.
Then, the object calls the method NOTIFY_CHANGE of the class CL_OBJ_ADAPTER 520 with the change data in type of the registered structure in the customizing to that object. This structure has to include a data structure named CNA_KEY OBJECT_PREFIX. Herein, the object has to fill an exclusive indicator to the changed object, the type of change, and an indicator if the set of data is a before (B) or an after (A) Images. In case of deletion, a B-Image should be provided. In case of a new created object an A-Image should be provided. The object should be able the set a switch, that no call-back is unwanted or not necessary. In that case, CNA will not try to read additional information for sub-objects.
The method NOTIFY_CHANGE additionally creates an instance of the main CNA-class CL_CNA_AGENT 540 and hands over to the access method SET_OBJ_CHANGED its own instance and the information about what type of object it is reporting about.
NOTIFY_CHANGE addresses the workload to the CNA-method DELEGATE_WORK.
Reading out customizing GET_CUSTOMIZING of the involved object: GET_OBJ_CUSTOMIZING, and the connected applications: GET_OBSERVER_CUSTOMIZING.
Check if object is active in terms of CNA customizing. Call-back to objects method GET_CHANGED_DATA in order to get all B&A-Images of the dependent sub-objects.
One the other hand, change notification from CNA to an application is performed in the following way:
All actions on the applications side of the communication are controlled by the CNA-method NOTIFY_OBSERVERS and work as described in the following operations:
In a first operation, all the fields and sub-objects that are relevant to an application should be read out. The relevant fields of the main object are registered in the applications customizing. This structure has to include CNA_KEY_OBJECT_PREFIX. The relevant sub-objects will be provided by the call-back method GET_RELEVANT_FIELDS_FOR_CHANGE of CNA-observer class 550. Beside from that, the application can decide by switches, if it is interested in newly created data and deletions.
CNA checks on the basis of the data evaluated in the first operation for each changed object if it is relevant to one of the registered applications, and copies the entry in an application specific hand over structure. The result of this operation is one table of relevant changes plus its corresponding dependent objects for each application. The main table is again of customized structure type, the dependents to these objects adapt the customized structure from the object.
Before the changes are finally communicated to the applications, an applications method named FILTER_CHANGED_DATA is called. Here the applications can define special logics to filter out some additional objects and prevent them to be reported.
Finally, the method SET_CHANGED_DATA is called in order to trigger applications post-processes.
The present techniques can be implemented in digital electronic circuitry, or in computer hardware, firmware, software, or in combinations of them. Apparatus of the invention can be implemented in a computer program product tangibly embodied in a machine-readable storage device for execution by a programmable processor. Method elements according to the invention can be performed by a programmable processor executing a program of instructions to perform functions of the invention by operating on the basis of input data, and by generating output data. The invention may be implemented in one or several computer programs that are executable in a programmable system, which includes at least one programmable processor coupled to receive data from, and transmit data to, a storage system, at least one input device, and at least one output device, respectively. Computer programs may be implemented in a high-level or object-oriented programming language, and/or in assembly or machine code. The language or code can be a compiled or interpreted language or code. Processors may include general and special purpose microprocessors. A processor receives instructions and data from memories, in particular from read-only memories and/or random access memories. A computer may include one or more mass storage devices for storing data; such devices may include magnetic disks, such as internal hard disks and removable disks; magneto-optical disks; and optical disks. Storage devices suitable for tangibly embodying computer program instructions and data include all forms of non-volatile memory, including by way of example semiconductor memory devices, such as EPROM, EEPROM, and flash memory devices; magnetic disks such as internal hard disks and removable disks; magneto-optical disks; and CD-ROM disks. Any of the foregoing can be supplemented by or incorporated in ASICs (application-specific integrated circuits).
The computer systems or distributed computer networks as mentioned above may be used, for example, for producing goods, delivering parts for assembling products, controlling technical or economical processes, or implementing telecommunication activities.
To provide for interaction with a user, the invention can be implemented on a computer system having a display device such as a monitor or LCD screen for displaying information to the user and a keyboard and a pointing device such as a mouse or a trackball by which the user can provide input to the computer system. The computer system can be programmed to provide a graphical or text user interface through which computer programs interact with users.
A computer may include a processor, memory coupled to the processor, a hard drive controller, a video controller and an input/output controller coupled to the processor by a processor bus. The hard drive controller is coupled to a hard disk drive suitable for storing executable computer programs, including programs embodying the present technique. The I/O controller is coupled by means of an I/O bus to an I/O interface. The I/O interface receives and transmits in analogue or digital form over at least one communication link. Such a communication link may be a serial link, a parallel link, local area network, or wireless link (e.g. an RF communication link). A display is coupled to an interface, which is coupled to an I/O bus. A keyboard and pointing device are also coupled to the I/O bus. Alternatively, separate buses may be used for the keyboard pointing device and I/O interface.
Embodiments are in the scope of the following claims.
| Number | Date | Country | Kind |
|---|---|---|---|
| 04107056.6 | Dec 2004 | EP | regional |