Some embodiments relate to enterprise systems utilizing occasionally-connected mobile devices. In particular, some embodiments are concerned with the management and consistency of business data within such systems.
Middleware may be used to provide functions to an enterprise. Middleware generally facilitates access to business data within a back-end system by an end-user of such data. More specifically, middleware may perform administrative functions such as conflict checking, integrity checking, and synchronization. These administrative functions may ensure consistency and accessibility of business data throughout the enterprise.
An end-user of business data may interact with the enterprise via a mobile device. In one example, a delivery person may deliver a product to customers along an established route. The delivery person may use a mobile device to determine a product quantity and delivery schedule for each customer on the route, to enter new orders and/or changes to existing orders, and to indicate successful delivery of an order. The mobile device must therefore receive business data from a back-end system that is specific to the route with which the mobile device is associated (e.g., product quantities, delivery schedules). The mobile device must also be able to transmit business data (e.g., new and/or changed order information) to the back-end system for validation and storage therein. Each of these functions may require conflict checking and integrity checking as described above.
The synchronization of business data between a mobile device and a back-end system presents issues that may not arise in a non-mobile context. Primarily, mobile devices might not be continuously connected to their associated back-end systems. It may therefore be more difficult to keep mobile devices up-to-date with respect to their associated data, and to maintain accurate knowledge of the internal state of the mobile devices.
Conventional “replication and realignment” middleware for addressing the foregoing may use a store-and-forward approach in which each message intended for each mobile device is queued as it is received from a back-end system. This approach may require an undesirably large amount of message storage. Bandwidth and processing inefficiencies may also result from this approach because earlier-queued messages are stored-and-forwarded to an associated mobile device even if the earlier-queued messages are rendered unnecessary by later-queued messages. Alternatively, a connect-and-compute approach requires middleware to compute appropriate synchronization messages only after a mobile device is connected thereto.
Improvements to the efficiency of mobile middleware are therefore desired. Moreover, mobile middleware is desired that may provide increased control and/or more robust management of business data than currently available.
Back-end system 110 of
Back-end system 110 may also comprise any other suitable program code, scripts, or other functional data that is executable to interface with communication network 120 and middleware 130 as described herein. Back-end system 110 may comprise any combination of hardware, software, and/or firmware elements that may provide the functions that are attributed to a back-end system herein. Two or more of these elements may be located remotely from one another and may communicate with one another via communication network 120 and/or a dedicated connection.
As used herein, systems “in communication” with one another are directly or indirectly capable of communicating over any number of different systems for transferring data, including but not limited to a local area network, a wide area network, a telephone network, a cellular network, a fiber-optic network, a satellite network, an infrared network, a radio frequency network, and any other type of network that may be used to transmit information between devices. Moreover, communication between systems may proceed over any one or more currently or hereafter-known transmission protocols, such as Asynchronous Transfer Mode (ATM), Internet Protocol (IP), Hypertext Transfer Protocol (HTTP) and Wireless Application Protocol (WAP). Communication network 120 may therefore comprise any communication media and protocols that are or become known.
Middleware 130 may comprise any combination of hardware, software, and/or firmware elements suitable to provide the functions that are attributed herein to middleware. In some embodiments, middleware 130 comprises program code running in an environment provided by back-end system 110. Middleware 130 may be embodied as services, layers, and/or core components of an associated operating environment, and/or may be embodied by any other executable software component, including a dynamic link library or a stand-alone application.
According to some embodiments, middleware 130 provides an association table and a message store, each of which will be described in detail below. As will also be described below, middleware 130 may operate to receive a business object instance from a backend system, determine one or more mobile devices associated with the business object instance, associate the business object instance with the one or more mobile devices and with an insert state in the association table, and associate, in the association table, the business object instance and the one or more mobile devices with a full-state message in the message store. Such features may provide more efficient management of business data among mobile devices than previously available.
Mobile devices 140 through 170 are associated with business objects transmitted by back-end system 110. Continuing with the example from the Background, a business object (BO) may comprise an order placed by a customer and may therefore be associated with the one of mobile devices 140 through 170 that is assigned to a delivery route to which that customer belongs. According to some embodiments, middleware 130 is responsible for transmitting an instance of the BO, as well as updates thereto, the appropriate one of mobile devices 140 through 170.
Mobile devices 140 through 170 may comprise any of a laptop, a personal digital assistant, a tablet computer, a handheld computer, a cellular telephone, a dedicated mobile device, and any other suitable mobile device or devices that are or become known. As mentioned above, mobile devices 140 through 170 may occasionally connect to middleware 130 directly or via communication network 120.
Incoming message processing module 1301 is shown receiving messages from back-end 110. These messages may be received from back-end 110 via communication network 120. Such messages may include instructions to insert a BO instance, to update a BO instance, to remove a BO instance, and/or to perform any other functions attributed to middleware 130 herein.
Incoming message processing module 130 uses publications/subscriptions data 1302 to identify one or more mobile devices with which an incoming BO instance should be associated. Such publications and subscriptions may follow a conventional model, in which a publication is a set of criteria fields on a BO instance with operations that can be used for filtering data for a particular receiver (e.g., country+ZIP code), and a subscription is a specific set of values for the criteria fields of a publication (e.g., USA+[45000-45999]) that are associated with one or more receivers to determine a set of receivers for a BO instance.
Admin tools 135 may be used to edit publications/subscriptions data 1302. In this regard, middleware 130 may offer a suitable interface (e.g., https, etc.) to allow secure manipulation of publications/subscriptions data 1302 by an authorized user.
Consolidated data store 1303 receives the BO instance from module 1301 to create a replica of relevant BO data from back-end system 110. The replica may be used by realignment module 1304 to replicate and realign the BO data as will be described below. Generally, realignment module 1304 updates association table 1305 through association update module 1306 to associate BO instances in data store 1303 (e.g., via a BO ID) with devices (e.g., via a device ID).
Incoming message processing module 1301 may also instruct message builder 1307 to build a full-state message or an update message based on the received BO instance. The thus-built message is stored in message store 1308. The messages of message store 1308 may be transmitted to appropriate mobile devices during synchronization and based on information located in association table 1305. In some embodiments, message store 1308 is implemented such that an identical message intended for two different mobile devices need only be stored once. The messages of message store 1308 may, according to some embodiments, be optimized and/or compressed to reduce a number of stored messages, a size of the stored messages, a number of messages transmitted to mobile devices, and/or a size of the messages transmitted to mobile devices.
Requests for synchronizations and transmission of messages from message store 1308 are handled by extract module 1309. Data handler 1310 initially receives synchronization requests from mobile devices 140 through 170. Data handler 1310 may also receive new or updated BO instances from mobile devices 140 through 170 for storage in back-end 110. Since conflicts can occur in any environment that permits concurrent updates to the same data from multiple devices, such BO instances are verified by conflict detection module 1311 using any suitable conflict detection and resolution protocol.
For example, an update conflict may be detected when two mobile devices attempt to update the same BO instance at nearly the same time. A uniqueness conflict may be detected if two devices each transmit a new BO instance having the same primary key value. Moreover, a delete conflict may occur when one device attempts to delete a BO instance and another device attempts to update or delete the BO instance.
The
The Direct RefCount field indicates a reference count contributed by direct subscriptions to the BO instance by the mobile device. Conversely, the Deps RefCount field indicates a reference count contributed by dependent (indirect) subscriptions to the BO instance by the mobile device. Usage of the RefCount fields according to some embodiments will be described below.
The Operation field indicates a state associated with the BO instance and the mobile device. Possible values include “insert”, “update”, “delete”, and “current”. According to some embodiments, an “insert” state indicates that a full-state message of the BO instance will be transmitted to the mobile device at a next synchronization, an “update” state indicates that an update message to update some or all values of the BO instance on the mobile device will be transmitted to the mobile device at a-next synchronization, a “delete” state indicates that an instruction to delete the BO instance from the device will be transmitted to the mobile device at a next synchronization, and a “current” state indicates that no operation is to be performed at a next synchronization because the device stores the current state of the BO instance.
With reference to the above “insert” and “update” states, the Delta Message field indicates a reference to a full-state message within message store 130 or specific fields of the BO instance to update. The specific fields may be indicated by a bitmask and the updated values of the fields may also be,stored in message store 1308.
The Missing Flag field indicates whether the BO instance associated with the BO instance ID is missing from middleware 130. For example, a Missing Flag of TRUE may indicate that middleware 130 does not include the BO instance.
The MsgId field may include serial Message IDs that are sequentially-created each time a new “record” of message store 1308 is created. The MsgText field includes a message to be transmitted to an appropriate one or more mobile devices based on association table 1305. If the message is an update (rather than a full-state message used during an “insert” operation), the SendBits field marks the fields of an associated BO instance that are to be updated per the MsgText field. The Type field further indicates whether the message is a full-state or update message.
A BO instance is initially received at 201. The BO instance may be received from back-end 110 by incoming message processing module 1301. Next, at 202, one or more mobile devices associated with the BO instance are determined. Realignment module 1304 may determine the one or more mobile devices based data associated with the BO instance itself and publications/subscriptions data 1302. Generally, one or more mobile devices subscribing to the particular BO instance may be determined at 202.
Realignment module 1304 may then associate the BO instance with one of the mobile devices and with an insert state in association table 1305 at 203. In some examples of 203, a new record of table 1305 is created including a Device ID of the mobile device, a BO Instance ID of the received BO instance, an insert state in the Operation field, and a Missing Flag of FALSE.
The association table is then used at 204 to associate the BO instance and the mobile device with a full-state message in message store 1308. According to some examples, the full-state message may be stored in association with a MsgID in store 1308, and the MsgID may be stored the Delta Message field of the association table record created at 203.
Flow cycles through 203 and 205 as long as it is determined at 205 that more mobile devices are associated with the BO instance. As a result, a record of association table 1305 is created for every mobile device determined at 202. Next, flow pauses at 206 to wait for reception of a next BO instance.
Consolidated data store 1303 shows BO instances received by middleware 130. The Material 2 BO instance is shown in parentheses to indicate that this instance will be received later than the other illustrated BO instances. In accordance with some embodiments of process 200, data 1302 is used to determine that Device 1 (D1) is associated with each initially-received BO instance. Although data 1302 only indicates a subscription to BO instance Tour 1, such a subscription indicates an association between Device 1 and any BO instances that depend from BO instance Tour 1.
Accordingly, a record of association table 1305 is created for each BO instance in object hierarchy 300. The record associated with BO instance Tour 1 includes a Direct RefCount value of 1 and Deps RefCount value of 0 while each other record initially includes a Direct RefCount value of 0 and Deps RefCount value of 1. Also, in accordance with process 200, each record is associated with an “insert” state. The record associated with BO instance Material 2 is initially associated with a TRUE Missing Flag because the BO instance is initially not received by middleware 130. The Missing Flag is changed from TRUE to FALSE after middleware 130 receives the BO instance Material 2.
Realignment module 1304 may recursively traverse object hierarchy 300 to determine the Deps RefCount for the records of association table 1305. As shown, such recursion indicates that BO instance Material 2 depends from two BO instances. As a result, the Deps RefCount associated with BO instance Material 2 is increased from 1 to 2.
It will first be assumed that the update received at 401 was an update to BO instance I2, and the update consisted of changing field “B” to value “3”. Next, it is determined at 402 that the only state associated with BO instance I2 in
Continuing the present example, flow returns to 401 to receive an update to BO instance I3, the update consisting of changing field “B” to value “2”. At 402, it is determined that the current state is associated with BO instance I3 (and device D1) in
Next, at 406, it is determined that another device (D2) is associated with BO instance I3 in the
Flow again returns to 401 to receive an update to BO instance I4. The update consists of changing field “C” to value “5”. At 402, it is determined that is BO instance I4 (and device D1) is associated with the current state in
Next, at 406, it is determined that another device (D2) is associated with BO instance I4 in the
At 501, an instruction is received to synchronize a mobile device. The instruction may be received by data handler 1310 from mobile device D1 and passed to extract module 1309. All BO instances associated with the mobile device are then determined at 502. As mentioned above,
A state associated with one of the BO instances is determined at 503. In the present example, an insert state is initially determined to be associated with BO instance I4 at 503. Accordingly, at 504, a full-state message associated with BO instance I4 is transmitted to mobile device D1. The full-state message may be associated with BO instance I4 in data store 1303 and/or in message store 1308 via a reference in an associated Delta Message field (not shown) of the D1, 14 record of table 1305. Next, at 506, a state associated with BO instance I4 and device D1 is changed to current. Association table 1305 of
According to the present example, it will be assumed that BO instances associated with the insert state will initially be determined at 503. Therefore, BO instance I5 is next determined to be associated with an insert state at 503. At 504, a full-state message associated with BO instance I5 is transmitted to mobile device D1, and a state associated with BO instance I5 and device D1 is changed to current at 506. The above process repeats for BO instance I8. In addition to the change to the D1, I4 data record mentioned above,
Flow again returns to 503 from 507 because more BO instances are associated with device D1 in association table 1305. Process 500 shows that, for BO instances associated with a current state, no action is taken and flow simply proceeds to 507 to determine if more BO instances exist.
BO instance I2 is determined to be associated with an update state at some iteration of 503. As shown, an update message associated with BO instance I2 is transmitted to device D1 at 505. The update message may be stored in association 1305 and/or in message store 1308 as described above. The state associated with BO instance I2 is then changed to current at 506 and flow continues to 507. Flow proceeds to 508 from 507 if all BO instances have been determined at 503.
Such a check is initiated at 701 and, at 702, it is determined if each BO instance in an association table is associated with the current state.
In some embodiments of 700, the referential integrity check is performed before the synchronization completeness check. Some embodiments perform these checks independently of one another, and/or with respect to specific mobile devices rather than with respect to an entire association table.
States associated with each BO instance that is associated with the device are determined from association table 1305 at 801. BO instances associated with the update state or the current state are associated with the insert state in association table 1305 at 802. BO instances associated with the remove state or the delete state are removed from association table 1305 at 803. Such associations and removals are reflected in table 1305 of
The mobile device is then synchronized at 804 based on table 1305 of
According to the example, the received update updates field “B” of BO instance O1 to “4”. Association table 1305 of
Accordingly, the BO instance O1 is associated with the update state at 903, and a corresponding new update message is stored in message store 1308 at 904. The BO instance O1 is then associated with the new update message in association table 1305 at 905.
Next, at 906, it is determined that other devices are associated with BO instance O1 in the
It is again determined at 906 that other devices are associated with BO instance O1 in the
The foregoing flow through 902, 904 and 905 then repeats twice for BO instance O1 in the D4, O1 record and the D5, 01 record. In these cases, the new update message stored in message store 1308 updates a previous update message that was stored in message store 1308 and associated-with BO instance O1 in each record via Delta (MsgID) “4”. Also, the BO instance O1 of each record is associated with the new update message in association table 1305 at 905 via Delta (MsgID) “8”.
Flow then proceeds from 906 to 908 because no further devices are associated with BO instance O1 in association table 1305. In some embodiments, process 900 improves maintenance of message store 1308 by allowing periodic purging of all messages associated with MsgID that is less than a lowest Delta of association table 1305.
The embodiments described herein are solely for the purpose of illustration. Those in the art will recognize that other embodiments may be practiced with modifications and alterations.
Number | Name | Date | Kind |
---|---|---|---|
6360101 | Irvin | Mar 2002 | B1 |
6487560 | LaRue et al. | Nov 2002 | B1 |
20020032613 | Buettgenbach et al. | Mar 2002 | A1 |
20020103724 | Huxter | Aug 2002 | A1 |
20030115162 | Konick | Jun 2003 | A1 |
20040254985 | Horstemeyer | Dec 2004 | A1 |
20060020366 | Bloom | Jan 2006 | A1 |
20060193264 | Bonar et al. | Aug 2006 | A1 |
20060235739 | Levis et al. | Oct 2006 | A1 |
20080046326 | Horstemeyer | Feb 2008 | A1 |
Number | Date | Country |
---|---|---|
2 476 156 | Jan 2005 | CA |
0 909 069 | Apr 1999 | EP |
WO 02054236 | Jul 2002 | WO |
Number | Date | Country | |
---|---|---|---|
20070049246 A1 | Mar 2007 | US |