CN102741829B - Message based synchronous method and system thereof for mobile service object - Google Patents

Message based synchronous method and system thereof for mobile service object Download PDF

Info

Publication number
CN102741829B
CN102741829B CN201080060198.2A CN201080060198A CN102741829B CN 102741829 B CN102741829 B CN 102741829B CN 201080060198 A CN201080060198 A CN 201080060198A CN 102741829 B CN102741829 B CN 102741829B
Authority
CN
China
Prior art keywords
message
present
subscription
client application
renewal
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.)
Active
Application number
CN201080060198.2A
Other languages
Chinese (zh)
Other versions
CN102741829A (en
Inventor
埃文·爱尔兰
大卫·克里格
迈克尔·弘
赫摩尔·潘迪亚
张国平
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sybase Inc
Original Assignee
Sybase Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Priority claimed from US12/813,104 external-priority patent/US9336291B2/en
Application filed by Sybase Inc filed Critical Sybase Inc
Publication of CN102741829A publication Critical patent/CN102741829A/en
Application granted granted Critical
Publication of CN102741829B publication Critical patent/CN102741829B/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2101Auditing as a secondary aspect
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/21Monitoring or handling of messages
    • H04L51/224Monitoring or handling of messages providing notification on incoming messages, e.g. pushed notifications of received messages

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)
  • Telephonic Communication Services (AREA)

Abstract

This application provides a kind of system, method and computer program product, for performing to inquire about from the notice obtained cursor of downloading for business object, to determine the subscription of renewal, thus providing renewal to client device in input message. There is provided extra system, method and computer program product, for guaranteeing the transmission at least one times of message.

Description

Message based synchronous method and system thereof for mobile service object
Technical field
The present invention relates generally to database synchronization, and more particularly, to the communication means for data syn-chronization.
Background technology
No matter when (opportunity generally specified user), when obtaining connectedness by performing complete synchronous event, mobile equipment depends on synchronization with business system traditionally. Such as when being positioned in docking frame (dockingcradle), mobile equipment can have connectedness. Mobile equipment performs the complete synchronization of its data after docking, uploads and download.
But, when the information uploaded be out-of-date or when another move equipment same disconnect period perform renewal time, these traditional methods cannot provide the conflict of the enough information data aspect to solve equipment and rely on. Additionally, traditional method does not include so that mobile equipment can reliably send and receive the communication means of these renewals.
Therefore, it is desirable to obtain the method for the improvement making the data from mobile equipment Tong Bu with business system.
Summary of the invention
Embodiments of the present invention include a method, and the method includes: perform to inquire about from the notice obtained cursor of downloading for business object, to identify the subscription updated; Subscription for this renewal runs this download cursor, to generate result row; And, in input message, this result row is sent to client device.
Embodiments of the present invention comprise additionally in a kind of computer-readable medium, it has the computer executable instructions being stored thereon, if being performed by computing equipment, then this computer executable instructions causes the method that this computing equipment is implemented to comprise the steps: perform to inquire about from the notice obtained cursor of downloading for business object, to identify the subscription updated; Subscription for this renewal runs this download cursor, to generate result row; And, in input message, this result row is sent to client device.
Additionally, embodiments of the present invention comprise additionally in a kind of system, this system includes memorizer, and it is set to preserve module; This module includes: perform module, and it is set to the notice obtained cursor of downloading performed from for business object and inquires about, to identify the subscription updated; Running module, it is set to run this download cursor for the subscription of this renewal, to generate result row; And, sending module, it is set to send this result row to client device in input message; Described system also includes one or more processor, and it is set to process this module.
Additionally, present invention additionally encompasses a kind of method, the method includes: receiving message from client, this message includes client identifier, message identifier and playback instructions;Search for the list of the client identifier of message corresponding to being previously received and message identifier pair, to determine corresponding to whether being received before this message of this client identifier and message identifier, once it is determined that do not received before this message, then process this message; And, this client identifier and message identifier are added in the client identifier of message corresponding to being previously received and the list of message identifier pair.
In addition, embodiments of the present invention include a kind of computer-readable medium, it has the computer executable instructions being stored thereon, if being performed by computing equipment, then this computer executable instructions causes the method that this computing equipment is implemented to comprise the steps: receiving the message from client, this message includes client identifier, message identifier and playback instructions; Search for the list of the client identifier of message corresponding to being previously received and message identifier pair, to determine corresponding to whether being received before this message of this client identifier and message identifier, once it is determined that do not received before this message, then process this message; And, this client identifier and message identifier are added to the client identifier of message corresponding to being previously received and the list of message identifier pair.
Additionally, embodiments of the present invention include a kind of system, this system includes memorizer, and it is set to preserve module; This module includes: receiver module, and it is set to receive message from client, and this message includes client identifier, message identifier and playback instructions; Search module, it is set to the list of client identifier and the message identifier pair searching for the message corresponding to being previously received, to determine corresponding to whether being received before this message of this client identifier and message identifier, once it is determined that do not received before this message, then process this message; And, adding module, it is set to add this client identifier and message identifier in the client identifier of message corresponding to being previously received and the list of message identifier pair; This system also includes one or more processor, and it is set to process this module.
Hereinafter, other features and advantages of the present invention and the embodiments of the present invention it are described in detail with reference to the attached drawings structurally and operationally. It is noted that the invention is not restricted to particular implementation described herein. At this, only present these embodiments for the purpose of description. Based on being included in this instruction, various equivalent modifications be will be apparent from by other embodiment.
Accompanying drawing explanation
The accompanying drawing of the part being included herein and constituting description illustrates embodiments of the present invention, and it is used for principles of the invention being explained further and making various equivalent modifications can implement and use the present invention together with description.
Fig. 1 be according to an embodiment of the present invention, exemplary enterprise network.
Fig. 2 A be according to an embodiment of the present invention, the flow chart that illustrates each step, wherein, the client application of mobile equipment can be operated by these steps, thus submit establishment for business object to synchronization server, update or delete message, it is used for being sent to enterprise information system.
Fig. 2 B be according to an embodiment of the present invention, the flow chart that illustrates each step, wherein, by these steps, enterprise information system processes the establishment, the renewal that receive or deletes message.
Fig. 3 be according to an embodiment of the present invention, the flow chart that illustrates each step, wherein, by these steps, the client application on mobile equipment processes the synchronous event received from synchronization server.
Fig. 4 be according to an embodiment of the present invention, the flow chart that illustrates each step, wherein, by these steps, client application starts request to create.
Fig. 5 be according to an embodiment of the present invention, the flow chart that illustrates each step, wherein, by these steps, client application starts and updates operation.
Fig. 6 be according to an embodiment of the present invention, the flow chart that illustrates each step, wherein, by these steps, client application starts deletion action.
Fig. 7 be according to an embodiment of the present invention, the flow chart that illustrates each step, wherein, be set to replay operations call back function (replayoperationcallback) is responded by client application by these steps.
Fig. 8 be according to an embodiment of the present invention, the flow chart that illustrates each step, wherein, by these steps, synchronization server be set to detection and abandon duplicate message.
Fig. 9 be according to an embodiment of the present invention, the flow chart that illustrates each step, wherein, by these steps, it is possible to by using cache table to perform the synchronization based on duplicate.
Figure 10 be according to an embodiment of the present invention, the flow chart that illustrates each step, wherein, by these steps, cache table can be used with download cursor together with entity subscription (entitysubscription), effectively provide input (import) message with the client application updated to request.
Figure 11 be according to an embodiment of the present invention, the flow chart that illustrates each step, wherein, by these steps, input message can together by batch processing.
Figure 12 be according to an embodiment of the present invention, the flow chart that illustrates each step, wherein, completed by the synchronization of startup of server by these steps.
Figure 13 illustrates an example computer system, it is possible to be implemented within embodiments of the present invention.
Now, the present invention will be described with reference to the drawings. Generally, in the accompanying drawings, identical reference marker represents identical or intimate element, additionally, normally, the leftmost numeral of reference marker represents the accompanying drawing of reference marker first time appearance.
Detailed description of the invention
I introduces
Now, the present invention will be described with reference to the drawings. Generally, in the accompanying drawings, identical reference marker represents identical or intimate element, additionally, normally, the leftmost numeral of reference marker represents that reference marker first time occurs in accompanying drawing therein.
As described below, it will be apparent to those skilled in the art that and the entity shown in software, hardware, firmware and/or accompanying drawing can implement the present invention. Any software code with the reality that the specialized hardware implementing the present invention controls is not limited to the present invention. It will be understood, therefore, that the modifications and variations of mode can be carried out within the scope and spirit of, the operating characteristics of the present invention is described under this premise.
Mean to perform combination in any for the purpose of appointment function, to hardware or component software to quoting of the module in specification and claims. This module is not necessarily the entity that rigidity limits so that some modules can functionally cover hardware and software component. Such as, what software module referred to can be the single file code in program, and program itself is as an independent software module. Such as, those skilled in the relevant art are it will be appreciated that the function of module can be limited according to multiple design or Performance Optimization technique.
Fig. 1 is exemplary enterprise network network 100 according to an embodiment of the present invention. According to another embodiment of the present invention, enterprise network 100 includes mobile equipment 102. Exemplarily and without limitation, mobile equipment 102 can include the mobile equipment of blackberry (BlackBerry) or storehouse, the California i Phone (AppleiPhone) than Dinon Apple (AppleComputer, Inc.) of such as action research company of Waterloo, Ontario, Canada city (ResearchInMotion). Various equivalent modifications is it will be appreciated that the technology that can be used for the equipment that moves 102 described herein generally also may be used for non-mobile device, for instance personal computer.
According to an embodiment of the present invention, move equipment 102 and can have client application 104 mounted thereto. According to an embodiment of the present invention, client application 104 can with equipment input and output (" I/O ") 106 interfaces, and this equipment inputs and is output as such as watch-dog, keyboard or touch-screen display. Client application 104 can also with local data base 108 interface, and this local data library storage is for the data set of client application 104.
According to an embodiment of the present invention, move equipment 102 to communicate with synchronization server 110. According to another embodiment of the present invention, similarly, extra mobile equipment 112a-c communicates with synchronization server 110. As understood by various equivalent modifications, by any one or more communication ports, various mobile equipment can be connected to synchronization server 110. In one embodiment, for instance, mobile equipment 102 can be connected with synchronization server 110 by the cellular communications networks point (communicationhops) that jumps with communicating on the Internet. It itself can be a little public or private network that various communications jump, and can include the assembly being positioned on the Internet and various privately owned in-house network.
According to an embodiment of the present invention, synchronization server 110 is positioned between one or more mobile equipment 102,112a-c and enterprise information system (" EIS ") 114. Synchronization server 110 contributes to catching the change to related data produced by EIS114, and this change is supplied to mobile equipment 102 and 112a-c. Synchronization server 110 also contributes to catch the change produced by mobile equipment 102 and 112a-c, and provides this change to EIS114. By this way, the data that can be obtained by mobile equipment 102 in local data base 108 can with the data syn-chronization from the respective data storage of EIS114 and enterprise data system 116. According to an embodiment of the present invention, synchronization server 110 keeps buffer memory, and this buffer memory reflects the data from enterprise data system 116.
According to an embodiment of the present invention, EIS114 is connected to synchronization server 110, to allow synchronization server 110 to provide above-mentioned data synchronization service. As understood by various equivalent modifications, EIS114 again may be by any communication port and communicates with synchronization server 110. Various equivalent modifications is it will also be understood that EIS114 and synchronization server 110 can share Same Physical server or distributed server as individual software component therein, or even can be compiled into a combination application program. It will be understood, therefore, that EIS114 and synchronization server 110 can be distributed on multiple diverse locations of enterprise network 100, it is shown as independent computing equipment in FIG by way of example, but is not limited to this.
According to an embodiment of the present invention, as described in the text, EIS114 also includes business system 116 or is communicatively connected to business system 116. According to another embodiment of the present invention, the data in local data base 108 include such as from the subset of the data of business system 116. According to an embodiment of the present invention, these data can be the form of mobile service object (" MBO "). MBO be a kind of can by synchronize business object between enterprise information system 114 with mobile equipment 102. MBO can be preserved by the storage in local data base 108, to allow to be accessed by mobile equipment 102 during being not connected to EIS114. At " the mobile service object (MetadataDrivenMobileBusinessObjects) of metadata driven " by name that July 15 in 2009 submits to 12/503, No. 573 U.S. Patent applications (lawyer's case number 1933.0720001) provide the example of MBO, this document is integrally incorporated by reference in this, but the invention is not restricted to this.
Various equivalent modifications processes the communication between client application 104 and synchronization server 110 it will be appreciated that various ways can be passed through. According to an embodiment of the present invention, communications framework is directly embedded in the client application 104 as provided by code generator or developer. An additional embodiments according to the present invention, can on mobile equipment 102 DBCA application program, to manage this communication.
II exemplary service object model
According to an embodiment of the present invention, it is possible to use be referred to as XML application program (" AFX "), based on publicly available XML special domain language to MBO model. Corresponding those skilled in the art are it will be appreciated that can model MBO by different modes, including by using visual modeling tool to model to graphically or by using special domain language (such as AFX text) to model with text mode. Correspondingly, at this by using the example that AFX presented and discussed to be exemplary rather than restrictive.
According to an embodiment of the present invention, program package definition (packagedefinition) provides data base's definition of title for defining the local data base in mobile equipment 102, class database (database-class) definition and zero or multiple substantial definition. Class database definition is for identifying the class representing local data base 108. If there is substantial definition, then the corresponding MBO of each of which. Substantial definition transfers the title that definition represents the class of corresponding MBO.
According to an embodiment of the present invention, entity itself is stored in local data base 108. According to another embodiment of the present invention, by using at least one surrogate (surrogatekey) and replacement key (alternatekey) to key in entity. Surrogate is the key assignments used by mobile equipment 102, to illustrate that mobile equipment fails to access the reason of the key establishment process of EIS ' 114. If client is realized there is the EIS114 key for entity, then this key can be used as substituting key. According to another embodiment of the present invention, synchronization server 110 surrogate is provided to mobile equipment 102, using as a collection of key that will be assigned with as required.
According to another embodiment of the present invention, substantial definition includes the Operation Definition to the corresponding change in EIS114. Exemplarily and without limitation, this Operation Definition is for creating, update or delete the data in EIS114.According to an embodiment of the present invention, substantial definition also can provide name inquiry, name inquiry to be the predefined inquiries for local data base 108 that can be proposed by mobile equipment 102. According to another embodiment of the present invention, substantial definition also includes: represent the definition that the change produced by mobile equipment 102 can be disclosed to synchronization server 110, and this definition is also represented by the change that EIS produces being subscribed to mobile equipment 102, for download.
Content in conjunction with the nonrestrictive exemplary object model of above-mentioned key element is as follows:
In above-mentioned exemplary object model, the program package " com.example.bank " relevant to the local data base 108 " my-bank " represented by class " MyDatabase " comprises the single entities of " Account " by name. This entity is keyed in by surrogate, has the replacement key defined by account ID (accountID), and this replacement key is the actual unique key used by the background system of EIS114 in the case.
According to another embodiment of the present invention, account entity also has multiple attribute, including above-mentioned surrogate and name on account, also includes the ID corresponding to account and account balance. Account entity also defines an inquiry " findByCustomer ", and when MBO, it allows the particular account number with corresponding ID searched and use.
Additionally, according to another embodiment of the present invention, account entity defines multiple operations, the plurality of operation describes the EIS operation for creating, update and delete data, and it is corresponding to the entity from enterprise data system 116.
According to another embodiment of the present invention, code generator runs on program package defines, thus producing the code being included in client application 104. This allows the developer of client application 104 quickly to activate client application 104, to coordinate the download moving the change between equipment 102 and synchronization server 11 and to upload. According to another embodiment of the present invention, code generator also can generate the code for performing on synchronization server 110.
Based on above-mentioned exemplary program package definition, it is possible to client application 104 is encoded, is defined the generating code of middle derivation to perform specific function by code generator from program package to use. For example, it is possible to call code produced by said procedure package definition, to resolve the following code sample from client application 104:
According to an embodiment of the present invention, code generator the class automatically generated is called by this code. Such as, section Account.findByCustomer (" 123 ") utilizes name inquiry " findByCustomer " account of coupling to be back in " accounts " variable. Then, for each result " a " in " accounts ", it is possible to show corresponding account ID and remaining sum.
According to an embodiment of the present invention, not using name inquiry " findByCustomer ", terminal use may specify the selection standard in dynamic queries. Code generator may specify multiple option, therefrom selects when the required inquiry of definition for developer. Such as, can be customized, by developer, the account that following sample code mates with particular community with search:
According to an embodiment of the present invention, pull-down menu or other input interface functions can be provided for developer, to customize the attribute and test value used in the examples described above.
In the examples described above, each account represents the example of a MBO.As above, and as shown in exemplary object model, according to an embodiment of the present invention, MBO can support to activate the function that the change to EIS114 illustrates. In an illustrative embodiments, these changes are the establishment, renewal or the deletion action that perform on MBO. Continue for above-mentioned example account entity, but without limitation, it is possible to by following code update account balance:
Varaccount=... //lookupanaccount (e.g., usingaquery)
Vardeposit=... //specifyadepositamount
Account.balance=account.balance+deposit;
Account.update ();
This exemplary code segment selects account to be changed, it is determined that prestore the amount of money, and is applied to account balance. According to an embodiment of the present invention, when preparing to apply this change, account.update () method is called. Similarly, if creating new account, then call account.create () method, so that local data base 108 will be submitted to the account. Account.delete () method can be deleted the account from local data base 108. According to an embodiment of the present invention, these changes are stored entirely in local data base 108, as the change hung up. According to another embodiment of the present invention, local data base 108 retains the copy of the original state before change. When the data playback failure carried out for enterprise data system 116 by EIS114 because of any reason, if it is desired, this allows to recover local data base 108.
According to an embodiment of the present invention, when client application 104 prepares the change of hang-up to be submitted to synchronization server 110 for when EIS114 is synchronized, call submitPending () method (such as account.submitPending ()), thus sorting the change hung up for transmission. According to another embodiment of the present invention, sending the change of described hang-up in the message, this will be described in more detail below.
According to another embodiment of the present invention, the message sent to synchronization server 110 includes the change of described hang-up, also includes original state. By submitting suspended state and original state to, EIS114 can avoid, delete or solve some conflicts. Continue for previous exemplary physical, can not knowing that other are more under news, by the remaining sum of two mobile same accounts of renewal of the equipment, so that each equipment is inconsistent for the initial basis of this change. Such as, in chronological order:
● equipment 1 downloads the remaining sum of 100 for account 123.
● equipment 2 downloads the remaining sum of 100 for account 123.
● equipment 1 is by balance updates to 200, but does not call account.submitPending () immediately.
● equipment 2 is by balance updates to 150, and calls account.submitPending ().
● EIS receives more newly requested from equipment 2, and on enterprise data system, current balance is updated to 150.
● equipment 1 now call account.submitPending () with represent original state remaining sum for 100 and hang up change to 200.
● based on the renewal applied from equipment 2, the current balance 150 that original state remaining sum 100 is reported by EIS with itself compares. Identifying and do not mate, the difference of the remaining sum of the hang-up received Yu original state remaining sum (such as 200-100) can be applied to current balance 150 by EIS.
● equipment 1 and equipment 2 are synchronized to new balance 250.
According to an embodiment of the present invention, when EIS114 can not solve to conflict, if or the mobile equipment 102 of EIS114 expectation solve this conflict, then EIS114 can provide failure notification to client application 104. According to another embodiment of the present invention, EIS114 can also provide, for client 104, the notice successfully playing back operation.
Fig. 2 A be according to an embodiment of the present invention, flow process Figure 200 of illustrating each step, wherein, the client application 104 of mobile equipment 102 can be operated by these steps, thus submit establishment for business object to synchronization server 110, update or delete (" CUD ") message, for being sent to EIS114. The method proceeds by step 204 from step 202, wherein produces the establishment of MBO, renewal or deletion. According to an embodiment of the present invention, in step 206, CUD message is submitted to synchronization server 110, and this message includes change and the original state hung up.
According to an embodiment of the present invention, in a step 208, client application 104 receives call back function (callback). According to an embodiment of the present invention, this call back function can represent that the trial of CUD message of resetting is success or failure EIS ' 114 for enterprise data system 116. According to an embodiment of the present invention, code generator a part for the client application 104 generated is responsible for receiving notice and responding this notice and adjust back registered function. According to another embodiment of the present invention, when receiving notice, the extra section registered callbacks processor of client application 104, to receive call back function. Step 210 describes about resetting whether successfully determine flow process. If this playback success, then the method terminates in step 218.
According to an embodiment of the present invention, on the other hand, if this playback is unsuccessful, then Conflict solving flow process is performed in the step 212. In the examples described above, when two equipment send afoul balance updates, EIS114 selection solves this contradiction by applying described difference in the second balance updates, is added to the number in account with reflection. Those skilled in the relevant art it will be appreciated that, it is necessary in different conflict scene, solve conflict in a different manner, and this exemplary Conflict solving flow process be not applied for all situations. Correspondingly, suitable motility is provided at this, to allow developer to process conflict suitably.
Such as, being not intended to the data based on receiving from equipment 1 in the examples described above and solve remaining sum, on the contrary, EIS114 is rejected by the renewal that application second time receives, and sends the notice representing that renewal is failed to equipment 1. In the step 212, when client application 104 learns this playback failure by EIS114, if it is desired, the contention-resolution schemes of itself then can be applied.
According to an embodiment of the present invention, in step 214, it is determined whether resubmit CUD message. If desired resubmit this message, then carry out required change in step 206 to correct conflict and to resubmit this message. It addition, according to another embodiment of the present invention, in the step 216, cancel this change by the suspended state data deleted from local data base 108. The method terminates in step 218.
Fig. 2 B is the flow chart 250 illustrating each step according to an embodiment of the present invention, and wherein, by these steps, EIS114 processes the CUD message received.The method is from step 252, and carries out to step 254, receives CUD message in this step, and this message includes change and the initial state information hung up.
In the step 256, the corresponding current data that will be stored in enterprise data system 116 compares with the original state specified in change request. Step 258 being determined, whether current data is identical with primary data. If identical, then EIS114 and client application 104 clear up same original state baseline, and easily the change of hang-up can be applied to EIS114. Therefore, reset the change hung up for enterprise data system 116 in step 266, and in step 268, call any registered playback be successfully processed device.
On the other hand, according to an embodiment of the present invention, if current data is different with initial condition data, then contention-resolution schemes is attempted in step 260. It is, for example possible to use the above-mentioned nonrestrictive exemplary Conflict solving flow process updated for conflict account balance. Determine whether in step 262 to solve conflict, if solving conflict, then can in step 266 replay data, and in step 268 confirm callback processor success. Such as, if EIS114 selects to use aforementioned solution flow process to solve remaining sum, then IES114 resets having enough information for enterprise data system 116 change of hang-up, and sends pass signal in step 268.
But, according to an embodiment of the present invention, if conflict can not be solved, if or EIS114 is already set as not attempting solving this conflict, then generate in the step 264 and reset unsuccessfully call back function. The method terminates in step 270.
IV suspended state management technique
Although this ability providing the change hung up makes EIS114 can solve the problem that multiple conflict together with original state, and if needed, allowing also to client application 104 and reverse the change of described hang-up, the mechanism providing a kind of all information reliably kept on mobile equipment 102 while these changes run processes of their own by EIS114 is useful. According to an embodiment of the present invention, until EIS114 points out that enterprise data system 116 has been updated thus reflecting the change of hang-up, just the change of the hang-up produced in local data base 108 by client application 104 is considered as final (that is, submission) change. Those skilled in the relevant art are it will be appreciated that can include the change of one or more attributes of the MBO of existence in local data base 108 change of existing data.
Code generator can be configured so that assists to manage this information. According to an embodiment of the present invention, when code generator runs, for each entity, in local data base 108, generate two tables. According to an embodiment of the present invention, the two table is called " master meter (maintable) " and " original state table (originalstatetable) ".
According to an embodiment of the present invention, master meter is for reflecting by the last state of mobile equipment 102 received data. According to another embodiment of the present invention, no matter when, when receiving data from synchronization server 110, these data are placed in master meter as up-to-date known data, are generally regarded as the current state of reflection enterprise data system 116. Assuming that mobile equipment 102 exists the probability of intermittent connectivity, and also have last chance that movement equipment 102 is synchronize with synchronization server 110, then the data in master meter be probably out-of-date.But, Conflict solving handling process described here, including being then likely to delete change if needed, it is possible to considers that data out-of-date for this possibilitys are carried out, as effectively most current data, this situation that processes by mobile equipment 102.
It addition, no matter when, when client terminal start-up is to the change (usually by performing to update or delete function) of available data, then first the original state of these data is stored in original state table, and the change of hang-up is added into master meter. Hereinafter, by reference Fig. 4,5 and 6 describe in further detail to be set to client application 104 process and create, update and the various modes of removal request.
Continuing for aforesaid entity example, the master meter based on account entity can have following form:
Original state table based on account entity can have following form:
In above-mentioned exemplary master meter, according to an embodiment of the present invention, the attribute relevant with entity can be created as the row in this table. Additionally, add pendingFlag, and it is combined with surrogateKey use, using the key as credit (Accounttable). Detailed description territory pendingChange, replayCounter, replayPending and replayFailure in further detail below. Original state table preserves initial attribute, and it is by using surrogate (surrogatekey) to key in.
Make, for keying in this master meter, two entities to be would be likely to occur for same surrogate by the mark of surrogate and hang-up (pendingflag) being combined. When being designated "false" of hang-up, the two entity is corresponding to the up-to-date download version of these data, and when when being designated "true" of hang-up, the two entity is corresponding to the change of hang-up. It is realized that there are other for managing suspended state and the method for downloaded status data in those skilled in the relevant art, it is shown that the setting gone out is exemplary rather than restrictive.
Fig. 3 is the flow chart 300 illustrating each step according to an embodiment of the present invention, and wherein, by these steps, the client application on mobile equipment 102 processes the synchronous event received from synchronization server 110. Those skilled in the relevant art are it will be appreciated that based on disclosure herein, it is possible to multiple method processes synchronization, including traditional synchronous method and the message based synchronization that describes in further detail at this.
The method, from step 302, proceeds to step 304, and wherein, client application 104 receives the change from synchronization server 110. Within step 306, it is determined that certain types of change. According to an embodiment of the present invention, this can be create 308a, update 308b or delete 308c request.
According to an embodiment of the present invention, if this request is for creating 308a request, then, in step 310a, client application 104 processes this request by the master meter comprising newly received data adds a line. Represent that these data of the state of up-to-date download have the mark of the hang-up being set to "false". According to another embodiment of the present invention, if table has existed corresponding entry (such as, identical surrogate, it has the mark of the hang-up being set to "false"), then on the contrary, create 308a request can be considered to update 308b, Tong Bu with EIS114 to ensure that. Applying the described exemplary query creating 308a request can be:
The row expression created: the new entry corresponding to surrogate 1000 has corresponding property value, this new entry is not the change (that is, it is the state of up-to-date download) hung up.
According to an embodiment of the present invention, receive in step 308b more newly requested. The row using these data mark to having corresponding surrogate in master meter and have the hang-up being set as "false" in step 310b is updated. According to another embodiment of the present invention, if being absent from the corresponding row to update, then this more newly requested being considered creates 308a. Continuing aforementioned exemplary, the exemplary query applying this renewal 308b request can be:
UpdateAccountsetbalance=150
WheresurrogateKey=1000andpendingFlag=false
Additionally, when the request that updates received by synchronization server 110 represents the state downloaded recently, this change should affect the entry of the mark with the hang-up being set to "false".
On the contrary, if this request is removal request 308c, then in step 310c, from master meter, corresponding entry is deleted. As it was previously stated, according to an embodiment of the present invention, this corresponding entry can match and have the mark of the hang-up being set to "false" with surrogate. The exemplary query applying this deletion 308c request can be:
deletefromAccount
WheresurrogateKey=1000andpendingFlag=false
Step 312 describes the process to these changes. State by the up-to-date download being considered as MBO by synchronization server 110 from any change that the EIS114 CUD message received introduces. Those skilled in the relevant art are it will be appreciated that particular implementation herein preferably keeps synchronization with enterprise data system 116 as well as possible but it also may use additive method. The method terminates in step 314.
Client application 104 can also start CUD message, it is necessary to by synchronization server 110 by this message and the data syn-chronization in enterprise data system 116. Fig. 4 is the flow chart 400 illustrating each step according to an embodiment of the present invention, and wherein, by these steps, client application 104 starts request to create. The method, from step 402, proceeds to step 404, and wherein, client application 104 calls establishment operation. In a step 406, respond this and call, the row hung up is inserted in master meter so that it is attribute is set as expectation attribute, and the mark hung up is set to "true".
Additionally, according to an embodiment of the present invention, it is set to aforesaid pendingChange territory represent that this changes to establishment operation. According to another embodiment of the present invention, this by being set to " C " or being set to other character strings being understood to mean that establishment operation and complete by this territory.
Client application 104 call operation (such as creates operation) and actual submission the to of client application 104 creates difference between this operation. The update () method (such as account.update ()) called corresponding to being described in detail above to this operation, change is stored in local data base 108 as the change hung up by the method. According to an embodiment of the present invention, the submission (such as account.submitPending ()) of this operation represents: by synchronization server 110, the change being committed to EIS114 is ranked up. Before submitting to, client application 104 is optional cancels this change (such as account.cancelPending ()), and the change hung up is deleted by simply from master meter.
According to an embodiment of the present invention, when client application 104 calls establishment operation, replayCounter row are set to unique nonzero value, and it is more than any replayCounter value used in local data base 108 before.As appreciable subsequently, this provides a kind of function, and this function for matching the change of hang-up by the response from EIS114. It will be appreciated that there is the additive method change of hang-up being associated with response message in various equivalent modifications, and the use in replayCounter (and replayPending and replayFailure) territory is exemplary rather than restrictive.
Continue aforementioned exemplary, and nonrestrictive, may result in following exemplary inquiry be performed creating calling of operation:
In the insertion method that this is exemplary, master meter creates the change (it is specified by the pendingFlag territory for "true") with the hang-up acting on behalf of key assignments 1000. The change hung up is marked as " C " that create, and playback counter is set to 20001, its be in this example playback counter value count up next numeral to be used in sequence.
According to an embodiment of the present invention, in a step 408, when by client application 104 this establishment operated be committed to synchronization server 110 time, change request is lined up to synchronization server, synchronization server includes the change of hang-up to be applied. Then, replayPending row are set as instruction client application 104 and are waiting the response to the request from EIS114, use following exemplary inquiry:
UpdateAccountsetreplayPending=20001
WheresurrogateKey=1000andpendingFlag=true
By arranging replayPending territory, it is possible to the change of this hang-up to be matched to the call back function being received from EIS114, success or failure. The method terminates in step 412.
Fig. 5 is the flow chart 500 illustrating each step according to an embodiment of the present invention, and wherein, by these steps, client application 104 starts renewal operation. In step 504, client application 104 calls renewal operation. When using the establishment operation being described in detail above, this row causing inserting hang-up in master meter. In one embodiment, this is by using following exemplary inquiry to complete:
It is the effect of 200 that this operation has the balance updates of account ID123. But, it is not the state of up-to-date download in change master meter, but creates suspended state version (pendingFlag=true), use identical surrogate. At this, this change is labeled as " U " that update, and provides next unique replayCounter value 20002.
However, it is also desirable to preserve the original state of these MBO data so that it can be used in Conflict solving. For this, exemplary query can be:
insertintoAccount_os(surrogateKey,accountId,customerId,
balance)
values(1000,"123","Jim",100)
By preserving original state in original state table, retain the information of the original state about MBO when performing to update. Although after performing above-mentioned inquiry, the MBO data inserted in original state table are likely to identical with the status data being downloaded in master meter, other events changing the status data being downloaded can be occurred that, for instance from the data that synchronization server 110 down loading updating is crossed. In such event, it is still necessary to know this original state, the renewal of this hang-up is based on this original state.
According to an embodiment of the present invention, if the MBO updated has had relevant suspended state, then update the row of existing hang-up, rather than insert new row. Additionally, the aforementioned original state being created will be retained, using the basis of the change as the hang-up being used for subsequently. Exemplary query for this renewal can be:
UpdateAccountsetbalance=200, pendingChange=" U ",
ReplayCounter=20002
WheresurrogateKey=1000andpendingFlag=true
According to an embodiment of the present invention, in step 510, client application 104 submits the renewal operation hung up to.According to an embodiment of the present invention, as above-mentioned establishment operates, lining up change request to synchronization server, this synchronization server includes the change of hang-up to be applied. Then, replayPending row are set as and indicate client application 104 waiting from the EIS114 response asked, using following exemplary inquiry:
UpdateAccountsetreplayPending=20002
WheresurrogateKey=1000andpendingFlag=true
By arranging replayPending territory, it is possible to again the change of this hang-up to be matched to the call back function being received from EIS114, success or failure. The method terminates in step 514.
Fig. 6 is the flow chart 600 illustrating each step according to an embodiment of the present invention, and wherein, by these steps, client application 104 starts deletion action. According to another embodiment of the present invention, the characteristic of deletion action is similar to renewal operation in many aspects, the difference is that, this operation is marked as " D " that delete in pendingChange territory.
When using renewal, in step 604, client application 104 calls deletion action. As a result of which it is, the change of this hang-up is inserted in master meter by client application 104, and playback counter is suitably set in step 606. For this, exemplary inquiry can be:
Similarly, in step 608, would correspond to the data of original state insert in original state table. For this, exemplary inquiry can be:
insertintoAccount_os(surrogateKey,accountId,customerId,
balance)
values(1000,"123","Jim",100)
According to an embodiment of the present invention, if the MBO being deleted has had relevant suspended state, then update the row of existing hang-up to indicate deletion, rather than insert newline. Additionally, the aforementioned original state being created will be retained, using the basis of the change as the hang-up being used for subsequently. For this, the exemplary inquiry of this renewal can be:
UpdateAccountsetpendingChange=" D ", replayCounter=20003
WheresurrogateKey=1000andpendingFlag=true
According to an embodiment of the present invention, in step 610, client application 104 submits deletion action to, for being processed by synchronization server 110 by EIS114. According to an embodiment of the present invention, at this, as it was previously stated, line up change request to synchronization server, this synchronization server includes the change of hang-up to be applied. Then, replayPending row are set as and indicate client application 104 waiting from the EIS114 response asked, using following exemplary inquiry:
UpdateAccountsetreplayPending=20003
WheresurrogateKey=1000andpendingFlag=true
By arranging replayPending territory, it is possible to again the change of this hang-up is matched to from the EIS114 call back function received, success or failure. The method terminates in step 614.
Fig. 7 be according to an embodiment of the present invention the flow chart 700 that each step is described is shown, wherein, be set to replay operations call back function is responded by client application 104 by these steps. Various equivalent modifications is it will be appreciated that use other Notification Methods except call back function also can produce similar effect, and the call back function being shown in which is exemplary rather than restrictive.
According to an embodiment of the present invention, the method is from step 702, and carries out to step 704, and wherein client application 104 is apprised of the result of replay operations.As it has been described above, it can be the form of call back function. Flow chart 250 above by referring to Fig. 2 B has been discussed in further detail the generation with produced call back function of resetting at EIS114 place.
In step 706, it is determined that whether the playback of the specific change hung up is successful. According to an embodiment of the present invention, the call back function on the successful callback processor of reception is made to separate with the call back function the two step on the callback processor of reception failure, thus processing.
If replay operations success, then the method is run to step 708, is wherein deleted from master meter by the row of corresponding hang-up. According to an embodiment of the present invention, only when matching to the replayPending value of the row successfully playing back relevant replayCounter value and hang-up, just there is this deletion. According to another embodiment of the present invention, if not mating, then ignore whole notice, to guarantee only to process the response to the last operation submitted to. For deleting the exemplary query of the row of hang-up can be:
deletefromAccount
WheresurrogateKey=1000andpendingFlag=true
Additionally, according to an embodiment of the present invention, in step 720, from original state table, delete the initial row of correspondence. For deleting the exemplary query of this original state row can be:
deletefromAccount_os
WheresurrogateKey=1000
According to an embodiment of the present invention, in step 712, successful callback processor is notified. According to an embodiment of the present invention, that provided by code generator and be incorporated in the code in client application 104 step performing in flow chart 700 general introduction by developer. The developer of client application 104 can have extra operation, and whether it should be performed depends on being success or failure, and the callback processor of registrable success or failure, to perform any extra process. If having been registered with such callback processor, then notify in step 712, and transfer this callback processor for extra process to by controlling in step 718.
According to an embodiment of the present invention, if on the contrary, this replay operations failure, the method is run to step 714, wherein, updates more changing one's profession of the hang-up in master meter, to reflect this failure. As reset successfully, only just perform this operation when the replayPending value of the row hung up with to successfully playing back between relevant replayCounter value when existence is mated. According to another embodiment of the present invention, if not mating, then ignore whole notice, to guarantee only to process the response to the last operation submitted to. Correspondingly, the content being used for updating the exemplary query of the row of hang-up can be:
UpdateAccountsetreplayPending=0, replayFailure=20001
WheresurrogateKey=1000andpendingFlag=true
According to an embodiment of the present invention, in step 716, if having registered a callback processor, then notice is for the failed callback processor of client application 104. Then, in step 718, client application 104 respond this readjustment to perform any extra process. The method terminates in step 720.
V Query Processing Technique
Above-mentioned for keeping the method for suspended state (wherein can resident download state) to allow same MBO can have two existing row in same master meter, for instance when there is the renewal or deletion action hung up. Correspondingly, possible duplicate must be made explanations by the inquiry write for master meter.
Such as, if existing MBO record is updated, then, except being absent from the change hung up, the developer of client application 104 can meet with following difficult point:
VaroldAccounts=Account.findByCustomer (" 123 ");
VarfirstAccount=oldAccounts [0];
FirstAccount.balance=firstAccount.balance+100;
FirstAccount.update (); //thiscreatesapendingchange
Now, if running same inquiry to search the account of user number 123, it will return the change of download state and hang-up, unless the task of developer is for solving this difficult point.
VarnewAccounts=Account.findByCustomer (" 123 ");
AssertnewAccounts.length==oldAccounts.length;
Unless carried out some background process, thus filtering this Query Result before the program run by developer receives Query Result, otherwise above-mentioned statement will be lost efficacy. And it is responsible for solving the differentiation problem between download state row and the change of hang-up by developer, not as processing this problem pellucidly.
According to an embodiment of the present invention, using code generator to rewrite name inquiry, the result to guarantee query execution can eliminate duplicate. According to another embodiment of the present invention, this is by being returned for the row (if present) of the hang-up of result or returning the statusline downloaded and complete.
This allows the row that there is suspended state is carried out extra change, but does not rely on that suspended state data, therefore also not dependent on the original state corresponding to that suspended state. By following the method, need not again create original state in renewal later and deletion (wherein there is the change of hang-up), because the original state that the change that they are substantially not rely on first hangs up is identical.
Use name inquiry Account.findByCustomer discussed above:
Selecta.*fromAccountawherea.customerId=:id
This execution can return to two row, wherein the firstAccount.accountId of accountId=preceding example. A line has pendingFlag=false, and another row has pendingFlag=true. In this case, for above-mentioned reasons, desired result is to have the row of pendingFlag=true. Therefore, it can by using the correlated subquery for original state table to rewrite this inquiry, for instance, example is as follows:
Above-mentioned query rewrite is realized by connecting grammer outside use SQL. Alternatively, it is possible to generate correlated subquery for master meter rather than original state table, but the row comprised due to original state table is possibly less than master meter, it is possible to by using above-mentioned inquiry to improve efficiency. Various equivalent modifications, it will be appreciated that there is a lot of other such rewriting, exemplarily only and without limitation illustrates above-mentioned inquiry.
According to another embodiment of the present invention, also may filter that the dynamic queries used together with master meter, the state wherein downloaded and the change of hang-up can coexist. In a non-limiting example embodiment, the developer of client application 104 can use dynamic queries generation module to specify dynamic queries, such as " query.where (AttributeTest.equal (attribute; testValue)) ", with the property value in test query " where " sentence. According to another embodiment of the present invention, produced generation inquiry is the state selecting the corresponding change (if present) hung up or download by Automated Design, and therefore need not actively rewrite this inquiry.
The message based synchronization of VI
Aforementioned sent to EIS114 and the CUD message that sent to client application 104 by synchronization server 110 by EIS114 by client application 104 can be communicated by message system described here by synchronization server 110. This message synchronization method be designed to support above described in suspended state management technique, and be designed to effectively use client resource and network to connect. But, various equivalent modifications is it will be appreciated that message technology described here is for the adaptability of other environment, and the use to the message based synchronization with suspended state management provided is exemplary rather than restrictive.
Message based synchronization (" MBS ") provides the ability performing to synchronize asynchronously. This means, for instance, mobile equipment 102 is no need to perform Complete Synchronization and wait until that it is set up with synchronization server 110 moment being connected always, but receives message from synchronization server 110 off and on when connection is available or is sent to message.
According to an embodiment of the present invention, utilize Jave messenger service (" JMS ") as communication port. According to another embodiment of the present invention, this message is the message of javax.jms.TextMessage type, and wherein content of text is JavaScript object notation (" JSON "). Various equivalent modifications is it will be appreciated that other means of communication can be utilized, and is exemplary rather than restrictive to the use of JSON in this offer on JMS.
According to an embodiment of the present invention, message is sent to JMS queue (such as mbs.N), the quantity that wherein N is not more than in synchronization server 110 effective queue. Multiple queue can be used, to allow synchronization server 110 to process the synchronization request from multiple clients. Described queue is configured to ensure that and transmits in proper order at least one times. For various equivalent modifications it is readily apparent that can't cause detrimental effects by repeatedly using above-mentioned suspended state management technique to carry out application message, and therefore it ensure that more practically and transmits at least one times, and non-precision once transmits.
According to an embodiment of the present invention, described message is designated for client to server or service in the communication of client. Each message specifies one group of header, the combination of header definition value to be sent and this message. For various equivalent modifications it is readily apparent that the accurate message being shown in which and described header are exemplary rather than restrictive. Such as, the header that message uses more or less than the header shown in these illustrative embodiments, or can use the header of difference group completely. Although additionally, the header being shown in which and message are intended to be used by JMS, various equivalent modifications it will be appreciated that, it is possible in other information transfer devices, use these technology.
The usage of iJMS header
Ii is from client to the message of server
Iii is from server to the message of client
Some above-mentioned MBS message are designed to failure message. According to an embodiment of the present invention, MBS failure message uses the numbering plan (numberscheme) based on HTTP conditional code, with misdirection. Such as, code 401 indicates: client request has invalid certificate or makes authentification failure due to some other reasonses. Code 403 indicates: client request has effective certificate, but user does not have the license of access request resource (such as program package, MBO or operation).Error code 404 indicates: attempt accessing non-existent program package or MBO. Code 500 is used for indicating: unspecified mistake. Those skilled in the relevant art will be recognized by, it is possible to uses multiple error coding scheme, and the such scheme provided is exemplary rather than restrictive.
According to an embodiment of the present invention, as implied above, when other are possible, when synchronization server 110 sends replayResult, replayFailed, searchResult or searchFailed message, can comprising daily record, this daily record can be encoded as the JSON array of log recording alternatively. According to another embodiment of the present invention, each log recording is encoded as JSON object, and it includes following territory:
Territory Value Optional/required
"level" " debug ", " info ", " warn ", " error ", in " fatal ". Required
"code" Comprise the int value of message code Optional
"message" Comprise the string value of Message-text Required
"timestamp" Represent the dateTime value when message generates. Required
"eisCode" Comprise the string value of backstage EIS code. Optional
"component" Mobile service object oriented Optional
"entityKey" The string value of mbo surrogate Optional
"operation" Comprise the string value of invoked action name Optional
"requestId" Comprise the string value of client playback counter Optional
Such as, the content of the daily record being included in replayResult message can be:
[{"level":"warn",
"message":"ThenamewastoolongsoItruncatedit.",
"timestamp":"2001-01-0112:34:56.789"}]
The content of the daily record of the another exemplary being included in replayFailed message can be:
[{"level":"error",
"message":"ThenamewastoolongsoIrejectedit.",
"timestamp":"2001-01-0112:34:56.789"}]
According to an embodiment of the present invention, log information is retained in local data base 108, uses for client application 104. Such as, client application 104 is optional exports 106 by equipment error message exports this user. According to another embodiment of the present invention, log information is retained in local data base 108 always, until it is deleted by client application 104.
When synchronization server 110 receives the message from client application 104, determined the uniqueness of this message by the combination of client id (above-mentioned " cid ") and message id (above-mentioned " id "). As indicated on, cid is the unique identifier of local data base for particular clients (such as, be only to local data base 108). Various equivalent modifications is it will be appreciated that according to configuration, the uniqueness of cid can be bound with other entities in mobile equipment 102 or bind with equipment itself. According to an embodiment of the present invention, each mobile equipment 102,112a-c each local data base be assigned itself unique cid. In a non-restrictive illustrative embodiment of the present invention, cid can be universal unique identifier (" UUID "), but various equivalent modifications will be recognized by, it is possible to use other identifier technology.
According to an embodiment of the present invention, the message id being simply shown as id in header list is the unique ID for this message selected by client. According to another embodiment of the present invention, when MBS being used for permanent state management based on above-mentioned technology, id territory is corresponding to the replayPending value more changing one's profession relevant to hang-up. When synchronization server 110 responds this message, it will use same value as itself ID for response, thus allowing client application 104 to make response be associated with the change of hang-up by above-mentioned technology.
In order to support transmission at least one times further, synchronization server 110 and receive the EIS114 of message from client application 104 and must assure that message will not be played out twice.Fig. 8 is the flow chart 800 illustrating each step according to an embodiment of the present invention, and wherein, by these steps, synchronization server 110 or EIS114 are set to detection and abandon duplicate message. According to an embodiment of the present invention, synchronization server 110 carries out Message Processing so that before being received, abandon any duplicate by EIS114.
According to an embodiment of the present invention, the method is from step 802, and carries out to step 804, wherein receives the message specifying cid and id. According to another embodiment of the present invention, in step 806, it is determined whether have received this combination of cid and id. According to an embodiment of the present invention, the list of cid and the id received with cid and id couple received before is compared, is thus determined.
In step 808, it is determined that whether this message is new, or its before whether received. If received before, the method carries out to step 814, wherein ignores this message, and the method terminates in step 816. But, if this message is new, then process its content in step 810. When using MBS to carry out permanent state management, this message is generally and sends the instruction to server from client application 104, changes to reset for enterprise data system 116, and therefore this message can be processed in step 810.
Tracked for guaranteeing the message that this is new, in step 812 cid and the id of this message is added in the list of the message received before. According to an embodiment of the present invention, these cid and id are in the cache database being stored in synchronization server 110. Then, the method terminates in step 816.
According to the embodiment of the present invention, can be used for most of type of messages of the communication from synchronization server 110 to client application 104 and the response to the communication started by client application 104 is provided. When there is change in enterprise data system 116, EIS114 is likely to the renewal being sent relevant MBO by synchronization server 110. Hereinbefore, the type of message for processing this communication illustrates with " import " message the table of " from server to the message of client ". Import message is sent to client application 104 by synchronization server 110, to notify that client is in one or more changes that application program occurs in EIS114 and client application 104 is interested.
According to an embodiment of the present invention, for supporting this function, each MBO has corresponding cache table (or " Virtual table ") in the cache database in synchronization server 110. This cache table storage attribute information of MBO for obtaining from enterprise data system 116, and contribute to the data syn-chronization information to local data base 108. Example before following closely, exemplary cache table can be:
This cache table includes territory, and these territories are for indicating whether last change MBO carried out by EIS114 and its are deleted in enterprise data system 116.
Fig. 9 is the flow chart 900 illustrating each step according to an embodiment of the present invention, wherein, by these steps, is different from MBS, it is possible to by using cache table to perform the synchronization (" RBS ") based on duplicate. The method allows client application 104 request synchronization with the data being maintained in its cache table by synchronization server 110. According to another embodiment of the present invention, the method starts from step 902 and runs to step 904, wherein, creates cache table for MBO, for instance cache table as above.
According to an embodiment of the present invention, in step 906, generate and download cursor. Downloading cursor is a kind of inquiry operated for cache table, to determine the difference after the last synchronization of client application 104. Such as, downloading light target content can be:
selecta.*fromAccount_vta
Wherea.lastModified >=: lastDownload
At this, client application 104 is being asked from obtaining all accounts being modified after the last synchronization of client application 104. LastDownload parameter is remembered by client application 104 and is taken as by this cache database at the upper level synchronization line of client is the timestamp being previously created. Correspondingly, in the examples described above, will only be loaded in down after this last synchronization line is by account modified for EIS114.
Correspondingly, receive the synchronization request from client application 104 in step 908, and perform suitable download cursor in step 901. According to an embodiment of the present invention, then the result of this inquiry is supplied to client application 104, for storage to local data base 108 as download state. The method terminates in step 914.
Do not rely on client application 104 and obtain the data synchronized, but when being created by EIS114, update or deleting data, allowing synchronization server 110 will to be pushed into client application 104 under relevant result, to be stored in local data base 108, this is advantageous for. According to an embodiment of the present invention, subscription can be assigned to program package by client application 104, and is thus assigned to its interior entity. Exemplarily and without limitation, by instruction, it wishes that the subscription message subscribing to which program package is sent to synchronization server 110 to client application 104.
After receiving this subscription message, synchronization server 110 is subscribed to for each entity set-up entity in this program package. It will be appreciated that there are other the suitable means for identifying subscription in those skilled in the relevant art, it is shown that the method gone out is exemplary rather than restrictive.
That used by synchronization server, can be defined as the exemplary table keeping entity to subscribe to:
Entity name is specified relevant to Customer ID by the entity of client subscription. PushTo value given client end receives the title of the message queue of import message from synchronization server 110. According to another embodiment of the present invention, being different from aforementioned exemplary, at this, the lastDownload time is retained in EntitySubscription table itself.
Correspondingly, if client C1 have subscribed the program package comprising account entity, then synchronization server 110 can by the subscription of following program creation example:
In this example, the lastDownload time is set as certain and serves as and represent the value of function that this subscription never performed download.
Figure 10 is the flow chart 1000 illustrating each step according to an embodiment of the present invention, wherein, by these steps, cache table can be used with download cursor together with entity subscription (entitysubscription), effectively provide import message with the client application 104 updated to request. Such as, there is client that the entity for example account entity subscribes in a large number (such as, 10000 clients) when, synchronization server 110 may determine that to require over and uses import message provides modified timetable to which client. Various equivalent modifications makes different clients synchronized with each other cannot have identical data as in the same time it will be appreciated that there is many reasons, and these reasons include interval and connect. If only some subsets request import message of client, then the process operand sending the message to all 10000 clients can be very big.
Correspondingly, according to an embodiment of the present invention, the method starts from step 1002 and carries out to step 1004, wherein, creates cache table as previously shown for MBO. According to another embodiment of the present invention, also as previously shown, generate in step 1006 and download cursor accordingly.
According to an embodiment of the present invention, in step 1008, from downloading, cursor obtains notice inquiry. According to another embodiment of the present invention, automatically from downloading acquisition notice inquiry cursor. Subscribing to the exemplary notice inquiry obtained from above-mentioned download cursor and entity can be:
The result of this notice inquiry is used for determining to subscribe to run for which downloads cursor. In above-mentioned exemplary notice inquiry, this causes identifying all subscription with at least one modified account.
Those skilled in the relevant art it will be appreciated that according to an embodiment of the present invention, can configuration phase perform step 1004,1006 and 1008, all the other steps can performed whenever the moment of expectation synchronous event simultaneously. Therefore need not all create buffer table when attempting to perform notice inquiry every time, generate and download cursor and obtain notice inquiry, as long as and need it can be retained in synchronization server 110 always.
According to an embodiment of the present invention, now, current time is stored as " timeBefore ". This is for when having simultaneously provided referential. Therefore, after such time, EIS114 any more new capital produced by by synchronization acquistion subsequently to, but, if lock in time is elected as certain reference point after a while, these renewals also can be dropped.
According to an embodiment of the present invention, then, notice is performed in step 1010. Can at predetermined intervals (such as, the notice interval of 10 seconds) or timetable or Initiated Mechanism based on other perform notice.
In step 1012, for each result of notice inquiry, by using parameter value lastDownload=s.lastDownload to run download cursor. According to an embodiment of the present invention, this represents, downloads cursor using as last download time, and this last download time obtains from entity subscription. By this mechanism, client application 104 is by download time last for not responsible offer, because last download time obtains from entity subscription.
According to an embodiment of the present invention, for each result of notice inquiry, performing to download light target result is one group of result row, and this result row comprises renewal, and described renewal should be imported in the local data base 108 of mobile equipment 102. Correspondingly, in step 1014, for the every a line produced, import message is sent to corresponding queue, and for relevant subscription, this queue is defined by s.pushTo in the above-described exemplary case.
According to an embodiment of the present invention, in step 1016, the last download time of each subscription is set as timeBefore value acquired before performing notice inquiry. This allows to perform the inquiry of this notice in the future, thus catch the term of execution contingent any change, and any change occurred after execution. The method terminates in step 1018.
VII bulk input (import) message
Above-mentioned import message can not comprise mass data. Additionally, specific client application 104 can receive multiple import message simultaneously, this is to be caused by the subscription of multiple synchronous events having by notice querying triggering. As a result of which it is, in order to maximize the use to communication port, send multiple import message together in batches and be advantageous for.But, any this batch processing is required for considering the memorizer of mobile equipment 102 and other restrictions.
According to an embodiment of the present invention, it is provided that a kind of solution that target maximum capacity size is set for import message. Figure 11 is the flow chart 1100 illustrating each step according to an embodiment of the present invention, wherein, by these steps, it is possible to batch processing import message together. Various equivalent modifications is it will be appreciated that this technology may be used for any MBS message of batch processing, but exemplarily and has without limitation explained with reference to import message.
The method starts from step 1102 and carries out to step 1104, wherein, receives or identifies or obtain the message sent in batch. In a step 1106, it is determined that in message buffer, whether there is the additional space for next message. If existing, then in step 1108 next one message is added into relief area. If being absent from, then this message is not added to this relief area. But, in step 1110, it is determined that whether this relief area is still sky. This means that this next one message is more than target maximum capacity size. If so, in any case because when all must send this message, in any case then all this message is added into this relief area. In step 1112, send the message in batch from relief area, and the method terminates in step 1114. If desired, the method is recycled and reused for each residue message treating to send in batch.
Exemplary Java code for implementing this technology may is that
VIII is by the synchronization of startup of server
According to an embodiment of the present invention, as above, by using cache table and downloading cursor, the synchronization (" RBS ") based on duplicate is possible. Client application 104 can send synchronization request to start synchronous event to synchronization server 110, and during this time, synchronization server sends to client application 104 and performs to download light target result.
Further describing a kind of new technique using notice inquiry hereinbefore, it generates the import message for being sent to client application 104 from synchronization server 110, and this allows the change by impact is subscribed to regularly to push to client application 104.
On the other hand, it is a kind of new technique by the synchronization of startup of server, it combines the element of both RBS and MBS for synchronization server 110, this employs initial from the MBS technology obtained, to notify the client application 104 needing request to synchronize, this employs initial from the RBS technology obtained.
Figure 12 is the flow chart 1200 illustrating each step according to an embodiment of the present invention, wherein, is completed by the synchronization of startup of server by these steps. According to an embodiment of the present invention, the method starts from step 1202 and carries out to step 1204, creates cache table wherein, then advancees to step 1206, creates wherein and downloads cursor. This cache table creates consistent with the method used by RBS and MBS scheme of mistake described in detail above with downloading light target.
In step 1208, obtain notice inquiry according to the technology about MBS discussed above. Such as what noticed in the technical discussion of MBS because synchronization server 110 can retain as required cache table, download cursor and notice inquiry, it is not necessary in each synchronous event perform step 1204,1206 and 1208.
According to an embodiment of the present invention, in step 1210, notice inquiry is performed.But, according to another embodiment of the present invention, in step 1214, synchronization request rather than import information are sent to client application 104. This message is pass on to client application 104: it should perform synchronization according to RBS technology. Correspondingly, the additional embodiments according to the present invention, in step 1215, receive simultaneously operating from client application 104. Then, the method terminates in step 1216.
IX Computer System Implementation
Each aspect of the present invention can be implemented by software, firmware, hardware or its combination. Figure 13 illustrates that an exemplary computer system 1300, the present invention or its part can be implemented as computer-readable code wherein. Such as, the method shown in flow process Figure 200 of Fig. 2 A, the flow chart 250 of Fig. 2 B, the flow chart 300 of Fig. 3, the flow chart 400 of Fig. 4, the flow chart 500 of Fig. 5, the flow chart 600 of Fig. 6, the flow chart 700 of Fig. 7, the flow chart 800 of Fig. 8, the flow chart 900 of Fig. 9, the flow chart 1000 of Figure 10, the flow chart 1100 of Figure 11 and the flow chart 1200 of Figure 12 can be implemented in system 1300. The various embodiments of the present invention are described according to this exemplary computer system 1300. After reading this description, other computer systems and/or computerized algorithm how is used to will be apparent to persons skilled in the relevant art to implement the present invention.
Computer system 1300 includes one or more processor, for instance processor 1304. Processor 1304 can be application specific processor or general processor. Processor 1304 is connected to the communications infrastructure 1306 (such as bus or network).
Computer system also includes main storage 1308, it is preferred to random access memory (RAM), and may also include additional storage 1310. Additional storage 1310 such as can include hard disk drive 1312, mobile memory driver 1314 and/or memory stick. Mobile memory driver 1314 can include floppy disk, tape drive, CD drive, flash memory or other. Mobile memory element 1318 is read out and/or writes by mobile memory driver 1314 in known manner. Mobile memory element 1318 can include can being read and/or the floppy disk of write, tape, CD etc. by mobile memory driver. Such as various equivalent modifications it will be appreciated that, mobile memory element 1318 includes the computer-usable storage medium with the computer software and/or data being stored therein.
In interchangeable embodiment, additional storage 1310 can include other the similar devices allowing computer program or other instructions to be written in computer system 1300. Such device such as can include mobile memory element 1322 and interface 1320. The example of such device can include program cartridge and cartridge interface (such as using in video game device), removable memory chip (such as EPROM or PROM) and associated socket, and other allow software and data to be sent to mobile memory element 1322 and the interface 1320 of computer system 1300 from mobile memory element 1322.
Computer system 1300 may also comprise communication interface 1324. Communication interface 1324 allows software and data to transmit between computer system 1300 and external equipment. Communication interface 1324 can include modem, network interface (Ethernet card), COM1, PCMCIA slot and card etc. The software transmitted by communication interface 1324 and data can be electricity, electromagnetism, optical signalling or other signal forms can caught by communication interface 1324.These signals are provided to communication interface 1324 by communication path 1326. Communication path 1326 carries signal, and can by using electric wire or cable, optical fiber, telephone wire, mobile phone link, RF link or other communication ports to implement.
In this article, term " computer program medium " and " computer usable medium " are generally used for referring to such as moving memory element 1318, mobile memory element 1322 and the medium of hard disk being arranged in hard disk drive 1312. It is carried on the signal on communication path 1326 and can also realize logic described here. Computer program medium and computer usable medium can also refer to memorizer, for instance main storage 1308 and additional storage 1310, and it can be storing semiconductor (such as DRAM etc.). These computer programs are for being used for the instrument of software offer to the 1300 of computer system.
Computer program (also referred to as computer control logic) is stored in main storage 1308 and/or additional storage 1310. Computer program is received also by communication interface 1324. Upon being performed, these computer programs make computer system 1300 can implement the present invention as said. Especially, upon being performed, these computer programs can so that the step of the present invention be implemented by processor 1304, and described step is the such as step in method shown in flow process Figure 200 of Fig. 2 A, the flow chart 250 of Fig. 2 B, the flow chart 300 of Fig. 3, the flow chart 400 of Fig. 4, the flow chart 500 of Fig. 5, the flow chart 600 of Fig. 6, the flow chart 700 of Fig. 7, the flow chart 800 of Fig. 8, the flow chart 900 of Fig. 9, the flow chart 1000 of Figure 10, the flow chart 1100 of Figure 11 and the flow chart 1200 of Figure 12 hereinbefore. Correspondingly, these computer programs represent the controller of computer system 1300. When using software to implement the present invention, this software is storable in computer program and can by using mobile memory driver 1314, interface 1320, hard disk drive 1312 or communication interface 1324 to be loaded in computer system 1300.
The invention still further relates to the computer program of the software including being stored on any computer usable medium. When performing in one or more data handling equipment, such software causes data handling equipment to operate as described in this. Embodiments of the present invention make use of currently known or in the future known any computer to use or readable medium. The example of computer usable medium includes but not limited to main storage device (such as any type of random access memory), auxiliary storage device (such as hard disk drive, floppy disk, CDROM, ZIP dish, tape, magnetic storage apparatus, optical storage apparatus, MEMS, nanotechnological storage device etc.), and communication media (such as, wired and cordless communication network, LAN, wide area network, the Internet etc.).
X conclusion
Although having had been described above the numerous embodiments of the present invention, it should be appreciated that it exemplarily only and without limitation illustrates these embodiments. Various equivalent modifications it will be appreciated that can produce the change in various ways and details when without departing from the spirit and scope of the present invention limited by appended claim. Should be understood that and the invention is not restricted to these examples. The present invention may be used for any parts as run saidly. Correspondingly, the width of the present invention and scope are not limited by any of above illustrative embodiments, and are defined according only to appended claim and its equivalent.

Claims (13)

1. a message based synchronous method, comprising:
Perform to inquire about from the notice obtained cursor of downloading for business object, to identify the subscription updated;
Subscription for described renewal runs described download cursor, result row is generated according to the last relevant timestamp of behavior that synchronizes, wherein this result row is only included in last synchronization line is the account being modified afterwards, wherein said download cursor is the inquiry operated for buffer table, to determine the difference after the last synchronization of client application; And
Described result row is sent to client device by input message.
2. the method for claim 1, also includes:
Generate the cache table for described business object, wherein, run described download cursor and notice inquiry for described cache table.
3. the method for claim 1, also includes:
For the subscription of described renewal, update last download time.
4. the method for claim 1, wherein described notice inquiry is set to subscribe to, based on identifying, the subscription determining described renewal, and wherein, the entity of at least one renewal is quoted in described subscription.
5. the method for claim 1, also includes:
Creating batch message, described batch of message includes input message set, and described establishment batch message includes:
Determining whether relief area has the exceptional space for inputting message from the next one of described input message set, if there is additional space, then described next input message being added into described relief area;
When there is additional space, repeat above-mentioned to determine step; And
Send described batch message.
6. the method for claim 1, also includes:
Synchronization request is sent to client device.
7. a message based synchro system, including:
For performing to inquire about from the notice obtained cursor of downloading for business object, to identify the device of the subscription updated;
Described download cursor is run for the subscription for above-mentioned renewal, the device of result row is generated according to the last relevant timestamp of behavior that synchronizes, wherein this result row is only included in last synchronization line is the account being modified afterwards, wherein said download cursor is the inquiry operated for buffer table, to determine the difference after the last synchronization of client application; And
For described result row being sent the device to client device in input message.
8. system as claimed in claim 7, described system also includes:
For generating the device of the cache table for described business object, wherein, described download cursor and notice inquiry are run for described cache table.
9. system as claimed in claim 7, described system also includes:
For the subscription for described renewal, update the device of last download time.
10. system as claimed in claim 7, wherein, the described device for notifying inquiry is set to subscribe to, based on identifying, the subscription determining described renewal, and the entity of at least one renewal is quoted in described subscription.
11. system as claimed in claim 7, described system also includes:
For creating the device of batch message, described batch of message includes input message set, and the described device for creating batch message includes:
For determining whether relief area has the exceptional space for inputting message from the next one of described input message set, if there is additional space, then the next one is inputted message and is added into the device of described relief area;
For when there is additional space, repeating the above-mentioned device determining step; And
For sending the device of described batch message.
12. system as claimed in claim 7, described system also includes:
For synchronization request is sent the device to client device.
13. a message based synchro system, comprising:
Memorizer, it is set to memory module, and described module includes:
Performing module, it is set to the notice obtained cursor of downloading performed from for business object and inquires about, to identify the subscription updated,
Run module, it is set to run described download cursor for the subscription of described renewal, result row is generated according to the last relevant timestamp of behavior that synchronizes, wherein this result row is only included in last synchronization line is the account being modified afterwards, wherein said download cursor is the inquiry operated for buffer table, to determine the difference after the last synchronization of client application, and
Sending module, it is set to send described result row to client device in input message;
Described system also includes:
One or more processor, it is set to process described execution module, run module and sending module.
CN201080060198.2A 2009-12-30 2010-12-14 Message based synchronous method and system thereof for mobile service object Active CN102741829B (en)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US29099009P 2009-12-30 2009-12-30
US61/290,990 2009-12-30
US12/813,104 US9336291B2 (en) 2009-12-30 2010-06-10 Message based synchronization for mobile business objects
US12/813,104 2010-06-10
PCT/US2010/060293 WO2011090599A2 (en) 2009-12-30 2010-12-14 Message based synchronization for mobile business objects

Publications (2)

Publication Number Publication Date
CN102741829A CN102741829A (en) 2012-10-17
CN102741829B true CN102741829B (en) 2016-06-15

Family

ID=44307452

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201080060198.2A Active CN102741829B (en) 2009-12-30 2010-12-14 Message based synchronous method and system thereof for mobile service object

Country Status (3)

Country Link
EP (1) EP2519890A4 (en)
CN (1) CN102741829B (en)
WO (1) WO2011090599A2 (en)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10795910B2 (en) * 2013-12-31 2020-10-06 Sybase, Inc. Robust communication system for guaranteed message sequencing with the detection of duplicate senders
CN109754204B (en) * 2018-12-10 2021-01-19 任飞翔 Block synchronization method and device
CN111177254B (en) * 2019-12-05 2021-08-17 武汉达梦数据库股份有限公司 Method and device for data synchronization between heterogeneous relational databases
CN111880949B (en) * 2020-07-28 2024-03-08 北京奇艺世纪科技有限公司 Service information processing method, system, device, server and terminal

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101155022A (en) * 2006-09-30 2008-04-02 华为技术有限公司 Data synchronization method, system and device

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6381241B1 (en) * 1997-09-30 2002-04-30 Wireless Access Duplicate message detection and mending of garbled messages
US20040205770A1 (en) * 2003-02-11 2004-10-14 International Business Machines Corporation Duplicate message elimination system for a message broker
US20070190978A1 (en) * 2005-01-13 2007-08-16 Ianywhere Solutions, Inc. System and Methodology for Extending Enterprise Messaging Systems to Mobile Devices
US9009292B2 (en) * 2007-07-30 2015-04-14 Sybase, Inc. Context-based data pre-fetching and notification for mobile applications
US7752165B2 (en) * 2007-08-01 2010-07-06 Sybase, Inc. Persistent query system for automatic on-demand data subscriptions from mobile devices
KR101430517B1 (en) * 2008-01-31 2014-08-19 삼성전자주식회사 Device and mehtod for synchronizing data in data communication devices
US8185521B2 (en) * 2008-02-29 2012-05-22 Research In Motion Limited System and method for presentation of local and remote message search results
KR101647735B1 (en) * 2009-12-24 2016-08-11 엘지전자 주식회사 Mobile terminal and data management method for mobile terminal

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101155022A (en) * 2006-09-30 2008-04-02 华为技术有限公司 Data synchronization method, system and device
CN101395838A (en) * 2006-09-30 2009-03-25 华为技术有限公司 Data synchronous method, system and apparatus

Also Published As

Publication number Publication date
CN102741829A (en) 2012-10-17
WO2011090599A2 (en) 2011-07-28
WO2011090599A3 (en) 2011-11-03
EP2519890A4 (en) 2016-09-28
EP2519890A2 (en) 2012-11-07

Similar Documents

Publication Publication Date Title
CN102725966B (en) Pending state management for mobile business objects
US9336291B2 (en) Message based synchronization for mobile business objects
CN102754411B (en) Use client-server bridge management object
CN103384876B (en) Information processing system is unified data processing method
US7752165B2 (en) Persistent query system for automatic on-demand data subscriptions from mobile devices
CN102971707B (en) For the method and apparatus that software kit installs allocating computer system
US20050071194A1 (en) System and method for providing patient record synchronization in a healthcare setting
US7085822B1 (en) Managing pervasive devices
CN109542865A (en) Distributed cluster system configuration file synchronous method, device, system and medium
TW200400444A (en) System and method for accessing different types of back end data stores
US7444386B2 (en) Application programming interface for provisioning services
CN101179430A (en) Device and method of controlling distributed system software version updating
CN102741829B (en) Message based synchronous method and system thereof for mobile service object
CN102202087A (en) Method for identifying storage equipment and system thereof
CN109144785A (en) Method and apparatus for Backup Data
CN103179193A (en) Data transmission system and data transmission method used for distributed application system
CN108667660B (en) Method and device for route management and service routing and routing system
CN115080101A (en) Application management method, application subscription method and related equipment
JP5613295B2 (en) Storage medium for providing system, method and program for managing distribution of contents to apparatus
CN110798358B (en) Distributed service identification method and device, computer readable medium and electronic equipment
CN112800066A (en) Index management method, related device and storage medium
US10728323B2 (en) Method and apparatus for operating infrastructure layer in cloud computing architecture
JPH11272471A (en) Software distribution system and recording medium stored with program used for the same
CN113127292A (en) Operation, maintenance and monitoring method suitable for multi-cloud management
US7213010B2 (en) System and method for the aggregation of place information in a multi-server system

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant