CN101310271B - Interfaces for a productivity suite application and a hosted user interface - Google Patents

Interfaces for a productivity suite application and a hosted user interface Download PDF

Info

Publication number
CN101310271B
CN101310271B CN2006800427227A CN200680042722A CN101310271B CN 101310271 B CN101310271 B CN 101310271B CN 2006800427227 A CN2006800427227 A CN 2006800427227A CN 200680042722 A CN200680042722 A CN 200680042722A CN 101310271 B CN101310271 B CN 101310271B
Authority
CN
China
Prior art keywords
control
project
productivity suite
string
characteristic
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.)
Expired - Fee Related
Application number
CN2006800427227A
Other languages
Chinese (zh)
Other versions
CN101310271A (en
Inventor
M·W·穆勒德
D·克洛泽林
J·R·派克
T·K·吉斯顿
T·J·艾伯尔
L·M·萨恩彻
R·J·索泽多
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.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Corp
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 US11/479,372 external-priority patent/US7945531B2/en
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of CN101310271A publication Critical patent/CN101310271A/en
Application granted granted Critical
Publication of CN101310271B publication Critical patent/CN101310271B/en
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

A user interface is defined by metadata, for conveniently being used with productive suite application programs by a dressing window, a task pane or some proper expressions. The data can be bound to a data source by a unidirectional format, to enable the change from the data source to transmit to the characteristic region in a UI form. The data also can be bound to a data source by a bidirectional format, to enable the change from the characteristic region of the UI to transmit back to the data source. The data source can be a local cache, used for the synchronization between the productive suite application programs and the business line application programs (for example, CRM application program). A presentation engine is arranged to process UI and data binding, so as to define a custom event processing program by a format of a hidden code program set. The productive suite items can access from the hidden code program set through a series of item interfaces.

Description

The interface that is used for the user interface of productivity suite application and main place
Background of invention
There is multiple productivity suite to use, comprises the application program that is used for incident is carried out schedule, store contact information, support Email, storage mission bit stream etc. for the user.An example is the Microsoft Outlook that can obtain from the Microsoft in Redmond city Microsoft Outlook
Figure S2006800427227D00012
Be Microsoft Office
Figure S2006800427227D00013
The part of productivity suite.Many users are familiar with this productivity suite application and often use them.
The user of some productivity suite also uses for the business software application program of specific commercial use exploitation or system (be also referred to as service line (Line of Business) herein, or LOB system).An example is can be from the Customer Relation Management (CRM) system of a plurality of companies acquisition.Many information by the LOB system management can comprise schedule of contact management, incident and task or the like.
In many cases, productivity suite can not be with automatic mode and LOB systems exchange or synchronizing information.For example, if the user adds a professional task in user's productivity suite, then this mission bit stream will can not moved to the LOB system automatically.On the contrary, this information is found in each different system by the user.Usually, the user must import this mission bit stream once more in the LOB system.The certain user may wish to allow with the LOB information storage in e-mail system and with back-end system in the LOB information synchronization.
Summary of the invention
Provide following general introduction so that introduce some notions, and this general introduction is not intended to determine the key feature or the essential feature of theme required for protection with the form of simplifying.This general introduction is not intended to be used to help to determine the scope of theme required for protection yet.
According to the each side of the disclosed embodiments, a kind of system and method is arranged to allow to visit with the user interface that dynamically generates projects of a productivity suite application.This user interface presents engine by one to be handled, and makes it can be hosted within the window or task pane of this productivity suite application.Being used for the every destination data of this productivity suite can be provided by a data source that is bound to this UI, makes the characteristics field of this UI upgrade with the change of these productivity suite projects.Performance data from this UI also can be bound to this data source, makes the change of this performance data propagate into this data source and upgrades this productivity suite projects.This productivity suite application can be such as Outlook
Figure S2006800427227D00021
Personal information manager (PIM) application programs such as (can obtain) from the Microsoft in Redmond city, or such as a certain other application programs such as Lotus Notes, Star Office.Exemplary productivity suite application comprises e-mail management, good at managing approximately, scheduling/schedule management, notepaper management, task management, contact management or the like.
In another embodiment, can propagate into synchrodata storage (SDS) to change by the characteristic among the UI of this productivity suite application master place.The productivity suite project that is associated with this SDS can be synchronous with a line-of-business application, makes data items in this productivity suite application and the change between the entity in this LOB application program come synchronously by using XML data representation and stored binding information.
In a specific implementation, be used for synchronous information and store with the XML data representation.The characteristic that this XML data representation can be used as about the data items in this productivity suite application stores.This XML data representation can be sent to this LOB application program, and the latter can handle its oneself the conflict solution and the data storage that are used for the LOB entity then.The change of the entity in this LOB application program be can be used as XML then to be provided, and this XML can be formatted into the control messages that is sent to this productivity suite application subsequently.This XML data representation provides the unified interface of being managed by each corresponding application programs simply.
In another specific implementation, the information that stores with the XML data representation can be used as productivity suite project (for example, Microsoft Outlook
Figure S2006800427227D00022
Project) characteristic in stores, and makes this productivity suite project to be expanded.
On the other hand, on each user's basis, carry out information encryption.This can assist in ensuring that advantageously that on the one hand the information that is included in any PIM project that is sent to the Email Recipient can not be read by this addressee, and therefore can not be by owing to neglect and shared.In related fields, encryption helps prevent information to cause addressee one side's unexpected behavior.For example, in some conventional system, the information that is included in the appointment can easily be shared when the invitation that sends about this appointment.Thus, the user can even share information under ignorant situation.Information encryption prevents the generation of the information sharing of this carelessness.Yet, having the user under the situation of a plurality of equipment, described encryption can not prevent that information from striding a plurality of equipment of user and be shared.
On the other hand, information is stored among the personal characteristics, thereby has reduced the chance of overwrite.In some conventional system, information can be under the ignorant situation of requestor with appointment request in the invitee implicitly exchange.As requestor and invitee when explicit or transmission information is implicitly shared information by wherein any, exist information will be stored in possibility in the same characteristic.Because finally stored information will be retained, therefore may be by overwrite from one of user's information.In one aspect of the invention, distribute a specific characteristic name to come store additional information, make conflict to be avoided.
On the other hand, information can be upgraded and demote, and makes the element of this information or attribute (that is, adopting XML) can be copied to the characteristic in the PIM project that comprises.For example, in one implementation, can use standard Microsoft Outlook
Figure S2006800427227D00031
UI shows or operates these values, and/or these values can be shared with other users.In one aspect of the invention, provide an XML data representation, make the LOB project to change by the LOB application program to the LOB application program.On the other hand, the LOB project formats with the synchronous XML data representation of productivity suite application project being used for subsequently.Because XML can be used as the mechanism that is used to the information of transmitting, therefore can realize the user interface of simplification to productivity suite application.
On the other hand, sync session frame manually between productivity suite and LOB application program.But dialog box can be used such as expanded application SGML any suitable language such as (XAML) and develop.A plurality of dialog boxes that can advantageously allow synchronously to show identical project between the dialog box are opened simultaneously.When the user in a dialog box during input information, this information can show it all other locally change automatically.For example, at Microsoft Outlook
Figure S2006800427227D00032
In the realization, when at Microsoft Outlook
Figure S2006800427227D00033
When showing identical information in dialog box (detector (Inspector)) and task pane or the action pane, need these information synchronously.This provides permission Microsoft Outlook on the one hand
Figure S2006800427227D00034
In a plurality of dialog boxes share same data instance (when's in editor's process) mechanism.
Aspect another, the productivity suite application on the client machine is configured to send request via the web server calls and upgrades, deletes or create novel entities in the LOB application program.The LOB application program is extracted this request from client machine, wherein the available XML data representation of this request provides.Server machine sends request via the control messages that is embedded in the Email, and with the project in renewal, deletion or the establishment productivity suite application, wherein this project is associated with a LOB entity.This control messages is hidden to the user, and is extracted for the binding between assessment, conflict solution, characteristic upgrading and LOB entity and the productivity suite application project by client machine.
More on the one hand, the LOB application program can transmit the LOB identifier in E-mail communication, and wherein this LOB identifier is associated with previous binding between productivity suite project and the LOB entity.In the stem that this LOB identifier can be embedded in the E-mail communication with email message is associated.This E-mail communication does not need to comprise (embed or otherwise) LOB entity itself, because the LOB identifier is quoted this LOB entity.In case receive this email message, the electronic mail processing program that is used for this productivity suite can identify the specific productivity suite project that synchronous shade (shadow) or synchrodata storage are quoted by this LOB identifier.In one example, the user can be by selecting in this email message and (for example linking that this LOB identifier is associated, the URL link of the form of any amount, such as HTTP, HTTPS, FTP, FTPS, OBA etc.) and the information (for example, XML data representation or other data representation) of other embedding visit this productivity suite project.In another example, can activate an action pane or task pane and visit this specific productivity suite project.Because the LOB identifier can be embedded in the link, therefore any desired action that is associated with this productivity suite project can be taked by suitably disposing this handling procedure (for example, URL handling procedure).
On the other hand, user interface (UI) list can be associated with this productivity suite project or project characteristic via described binding association.A particular aspects, this productivity suite application can dynamically present a UI list by utilizing structural metadata.This structural metadata allows the developer easily to customize the UI list, and in some cases, the UI list that dynamic metadata drives need not to use binding feature (for example, the UI list need not to be associated with the characteristic of productivity suite project).
Also having on the one hand, the developer can create composite application by many different application programs are reused the previous meta data definition of creating.That is, this aspect allows user to define based on the application program of a plurality of manufacturers and creates composite application.
Each embodiment can be implemented as computer processes, computer system (comprising mobile computing device and hand-held computing equipment) or such as goods such as computer programs.This computer program can be can be by computer system reads and comprised the computer-readable medium of the computer executable instructions that is used to carry out a computer processes.This computer program also can be can by computing system read and the carrier wave of the computer program of the instruction that is used to carry out a computer processes of having encoded on transmitting signal.
The accompanying drawing summary
Described the embodiment of unrestricted and non-limit with reference to the following drawings, in whole accompanying drawings, identical reference number is represented identical part, except as otherwise noted.
Fig. 1 is expression can be used for realizing the example general computer environment of technology described herein according to an embodiment a block diagram.
Fig. 2 shows client devices wherein and is arranged to example system with the LOB system synchronization.
Fig. 3 shows how relevant between binding project and the LOB entity is set when by the new binding project of LOB system creation one.
Fig. 4 shows how being correlated with between binding project and the LOB entity is set when creating a new binding project in productivity suite.
Fig. 5 shows how to change being correlated with between binding project and the LOB entity in productivity suite when upgrading or delete a binding project.
Fig. 6 shows when by the LOB system update or delete a binding and how to change relevant between binding project and the LOB entity during project.
Fig. 7 shows in the example communication flow process between client-server during the push operation.
Fig. 8 and 9 shows the pulling process that can use in another example system.
Figure 10 shows the example design of the synchronization subsystem of the productivity suite that is used for using on client machine.
Figure 11 shows another example communication flow process between the client-server.
Figure 12 shows an example synchronization subsystem.
Figure 13 is the process flow diagram that is used for an example method for synchronous.
Figure 14 A-14D shows the example UI list that generates from metadata.
Figure 15-16 shows various control types and the class that is used for the control that can define in metadata.
Figure 17 is used for an example to present engine process figure.
Figure 18 shows the various characteristics that can be used for specifying to the data binding of a control characteristic.
Appendix I shows and is used for productivity suite application (for example, Microsoft Outlook
Figure S2006800427227D00051
) and line-of-business application between synchronous example modes.
Appendix II shows and is used for and productivity suite application (for example, Microsoft Outlook ) in the example modes of project interface.
Appendix III shows and is used for and productivity suite application (for example, Microsoft Outlook
Figure S2006800427227D00053
) in the definition of various interface, method and button.onrelease of project interface.
Appendix IV shows and is used at productivity suite application (for example, MicrosoftOutlook
Figure S2006800427227D00054
) in the example modes of metadata of definition of user's interface (UI) list.
Describe in detail
More completely described each embodiment below with reference to accompanying drawing, accompanying drawing forms the part of each embodiment, and shows the concrete example embodiment that is used to implement each embodiment.Yet other embodiment can be with many multi-form realizations, and should not be construed as limited to embodiment described herein; On the contrary, provide these embodiment so that present disclosure is comprehensive and complete.Each embodiment can be implemented as method, system or equipment.Therefore, each embodiment can adopt hardware to realize, the form of the realization of software and hardware aspect is realized or made up to software fully.Therefore, below describe consideration in limiting sense in detail.
In brief, user interface can be defined to surround window, task pane or a certain other suitable expression by the metadata that is used for productivity suite application.Data can be tied to data source by unidirectional form, and feasible change from data source propagates into the characteristic territory in the UI list.Data also can be tied to data source by bi-directional format, make that the change from the characteristic territory of UI is propagated back to data source.Data source can be such as the synchronous local cache that is used between productivity suite application and service line (LOB) application program (for example, CRM application program).One presents engine is arranged to handle this UI and data binding, makes the customized event handling procedure define with covered code (code behind) procedure set form.The productivity suite project can visit from this covered code procedure set by a series of project interfaces.
The logical operation of each embodiment is implemented as the sequence of the computer implemented step of (1) moving on computing system, and/or the interconnected machine module in (2) computing system.Realization is the selection problem that depends on the performance requirement of the computing system of realizing this embodiment.Therefore, the logical operation that constitutes embodiment described herein is called operation, step or module with being replaced.
Various modules, technology and method can be described in the general context of the computer executable instructions of being carried out by one or more computing machines or miscellaneous equipment such as program module etc. herein.Generally speaking, program module comprises the routine that is used to carry out particular task or realizes particular abstract, program, object, assembly, data structure etc.Usually, the function of program module can combination or distribution as required in each embodiment.
A realization of these modules and technology can be stored on the computer-readable medium of a certain form maybe can pass through its transmission.Computer-readable medium can be can be by any available medium of computer access.As example but not the limitation, computer-readable medium can comprise " computer-readable storage medium " and " communication media ".
" computer-readable storage medium " comprises the volatibility that realizes with arbitrary method or the technology that is used to store such as information such as computer-readable instruction, data structure, program module or other data and non-volatile, removable and removable medium not.Computer-readable storage medium includes but not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disc (DVD) or other optical disc storage, magnetic holder, tape, disk storage or other magnetic storage apparatus, maybe can be used for storing desired information and can be by arbitrary other medium of computer access.
" communication media " to embody computer-readable instruction, data structure, program module or other data such as modulated message signal such as carrier wave or other transmission mechanisms, communication media also comprises arbitrary information-delivery media usually.Term " modulated message signal " refers to be provided with or change in the mode that the information in the signal is encoded the signal of its one or more features.As example but not limitation, communication media comprises wire medium, as cable network or directly line connect, and wireless medium is as acoustics, RF, infrared and other wireless medium.Above-mentioned arbitrary combination also should be included within the scope of computer-readable medium.
Run through this instructions the statement of " embodiment ", " embodiment " or " example embodiment " is meaned that described concrete feature, structure or characteristic are included among at least one embodiment.Thus, can represent more than embodiment only the use of these phrases.In addition, described feature, structure or characteristic can make up with any suitable mode in one or more embodiments.
Yet, those skilled in the art will recognize that each embodiment can the one or more situation in not having these details under, perhaps wait and implement with other method, resource, material.In other cases, not being shown specifically or describing known structure, resource or operation only is to become obscure for fear of the each side that makes each embodiment.
The example calculations environment
Fig. 1 shows general-purpose computations environment 100, and it can be used for realizing technology described herein.Computer environment 100 only is an example of computing environment, is not that usable range or function to computing machine and network architecture proposes any limitation.Computer environment 100 should be interpreted as the arbitrary assembly shown in the example computer environment 100 or its combination are had any dependence or demand yet.
Computer environment 100 comprises the universal computing device of computing machine 102 forms.The assembly of computing machine 102 can include but not limited to, one or more processors or processing unit 104, system storage 106 and will comprise that the sorts of systems assembly of processor 104 is coupled to the system bus 108 of system storage 106.
One or more of some kinds of types of bus structure of system bus 108 expressions, the processor or the local bus that comprise memory bus or Memory Controller, peripheral bus, Accelerated Graphics Port and use all kinds of bus architectures.As example, this class architecture can comprise ISA(Industry Standard Architecture) bus, MCA (MCA) bus, enhancement mode ISA (EISA) bus, Video Electronics Standards Association (VESA) local bus, peripheral component interconnect (pci) bus (being also referred to as mezzanine (Mezzanine) bus), PCI Express bus, USB (universal serial bus) (USB), secure digital (SD) bus or IEEE 1394 (being live wire) bus.
Computing machine 102 can comprise various computer-readable mediums.This class computer-readable medium can be can be by arbitrary usable medium of computing machine 102 visit, comprises volatibility and non-volatile media, removable and removable medium not.
System storage 106 comprises such as volatile memory such as random-access memory (ram)s 110, and/or such as the computer-readable medium of nonvolatile memory forms such as ROM (read-only memory) (ROM) 112 or flash memory ram.Basic input/output (BIOS) 114 comprises that it is stored in ROM 112 or the flash memory ram as help the basic routine of transmission information between the element in computing machine 102 when starting.RAM 110 comprises addressable immediately and/or current data of operating of processing unit 104 and/or program module usually.
Computing machine 102 also can comprise other removable/not removable, volatile/nonvolatile computer storage media.As example, Fig. 1 shows the hard disk drive 116 that not removable, non-volatile magnetic medium (not shown) is read and write, to removable, non-volatile magnetic disk 120 (as, " floppy disk ") disc driver 118 read and write, and to removable, non-volatile CD 124, the CD drive of reading and writing as CD-ROM, DVD-ROM or other light medium 122.Each of hard disk drive 116, disc driver 118 and CD drive 122 is connected to system bus 108 by one or more data media interfaces 125.Perhaps, hard disk drive 116, disc driver 118 and CD drive 122 can be connected to system bus 108 by one or more interface (not shown).
Disk drive and the computer-readable medium that is associated thereof provide the non-volatile memories of computer-readable instruction, data structure, program module and other data for computing machine 102.Although this example shows hard disk 116, moveable magnetic disc 120 and removable CD 124, yet be appreciated that, can store can be by the computer-readable medium of other type of the data of computer access, as tape cassete or other magnetic storage apparatus, flash card, CD-ROM, digital versatile disc (DVD) or other optical storage, random-access memory (ram), ROM (read-only memory) (ROM), Electrically Erasable Read Only Memory (EEPROM) etc., also can be used for realization example computing system and environment.
A plurality of program modules can be stored among hard disk 116, disk 120, CD 124, ROM 112 and/or the RAM 110, as example, comprise operating system 126, one or more application program 128, other program module 130 and routine data 132.In these operating systems 126, one or more application program 128, other program module 130 and the routine data 132 (or its a certain combination) each can realize supporting the resident assembly of all or part of distributed file system.
The user can by such as keyboard 134 and pointing device 136 (as, " mouse ") etc. input equipment to computing machine 102 input commands and information.Other input equipment 138 (not specifically illustrating) can comprise microphone, operating rod, game paddle, satellite dish, scanner and/or its analog.These and other input equipment is connected to processing unit 104 by the input/output interface 140 that is coupled to system bus 108 usually, but also can be connected with bus structure by other interface, as parallel port, game port or USB (universal serial bus) (USB).
The display device of monitor 142 or other type also by interface, is connected to system bus 108 as video adapter 144.Except that monitor 142, other output peripherals can comprise that they can be connected to computing machine 102 by I/O interface 140 such as assemblies such as loudspeaker (not shown) and printers 146.
Computing machine 102 can use one or more remote computers, is connected in the networked environment as the logic of remote computing device 148 and operates.As example, remote computing device 148 can be PC, portable computer, server, router, network computer, peer device or other common network node or the like.Remote computing device 148 is illustrated as comprising herein the portable computer with respect to described many or all elements and feature of computing machine 102.Perhaps, computing machine 102 also can be operated in the environment of non-networking.
Logic connection between computing machine 102 and the remote computer 148 is described to Local Area Network 150 and general wide area network (WAN) 152.This class network environment is common in office, enterprise-wide. computer networks, Intranet and the Internet.
When realizing in the lan network environment, computing machine 102 is connected to LAN (Local Area Network) 150 by network interface or adapter 154.When using in the WAN network environment, computing machine 102 generally includes modulator-demodular unit 156 or is used for setting up other device of communication by wide area network 152.Modulator-demodular unit 156 can be internal or external to computing machine 102, and it is connected to system bus 108 by I/O interface 140 or other suitable mechanism.Be appreciated that it is exemplary that the network that illustrates connects, and also can use other means of setting up at least one communication link at computing machine 102 and 148.
Such as in the networked environment shown in the computing environment 100, program module or its part described with respect to computing machine 102 can be stored in the remote memory storage device.As example, remote application 158 resides in the memory devices of remote computer 148.For purposes of illustration, application program and be shown as discrete frame herein such as other executable program components such as operating systems, although can recognize, these programs reside in the different memory modules of computing equipment 102 in the different moment with assembly, and are carried out by at least one data processor of computing machine.
Below be at MIcrosoft Outlook
Figure S2006800427227D00101
The middle support Microsoft Outlook that realizes
Figure S2006800427227D00102
The synchronous example interface of information and LOB system and the description of configuration.In other embodiments, replace MicrosoftOutlook
Figure S2006800427227D00103
Or additional as it, can use different productivity suite applications.
Example arrangement
Fig. 2 shows client devices wherein and is arranged to example system with the LOB system synchronization.As shown in the figure, such as Microsoft Outlook Available on client devices Deng productivity suite (220).Microsoft Outlook
Figure S2006800427227D00105
Safeguard one or more projects, such as: calendar, appointment, contact person, Email etc.Each productivity suite project (230) comprises the one group standard feature (231) relevant with this productivity suite, and the one or more data item (binding data 232) relevant with the LOB system.Additional system performance also is associated with this project, allly in this way data and characteristic is tied to project necessary (for example, the binding information in the system performance 233).In project outside (240), one group of system performance (242) with sync correlation is arranged, and the data storage (241) that is used for the high-speed cache synchrodata.
Unique user must be installed client software on many machines.Yet, only master machine can with the LOB system synchronization.Other machine is considered to less important machine.LOB system and master machine synchronously return a service response.A this LOB system and a formatter interface are so that " order " towards the LOB system to be provided to master machine, such as establishment, renewal or delete command.At any time, a master machine can only be arranged.Comprise that the less important machine (for example, client computer 260) of its oneself productivity suite copy (270) still comprises the copy of information available on the master machine, comprises binding the project business and the synchronous regime of (for example, production project 280 comprises characteristic 281-283).Described system can be arranged to safeguard a synchronous high-speed cache on server, being distributed to less important client computer from the service condition response of server.
Productivity suite project (for example, project 230) should be held the enough information that supplies system identification and present the binding project.Binding data (characteristic that comprises upgrading) should store and is associated with it with the productivity suite project.The system information that is stored in the productivity suite project should be static.In other words, it should not change when in a single day it be set up, to avoid introducing " artificially " synchronization conflicts.System should store synchronous relevant synchrodata and the system performance with productivity suite project outside.Can use the token that is hidden in the characteristic to specify which machine is master machine.In some cases, can transmit token, make master machine under such as situations such as disaster recovery, to change.
Fig. 3 shows how relevant between binding project (330) and the LOB entity (370) is set when by the new binding project of LOB system creation one.At first, as by create LOB entity (370) indicated in the step 1 (391) in LOB system (360), wherein LOB entity (370) comprises an identifier (CorrelationId (correlation ID) 372).LOB system (360) transmits one to server (340) and creates the request (392) that is designated the LOB entity of binding project by CorrelationId 372, and is indicated as step 2.Server (340) receives this request (392), and uses a formatter (250) to this request (392), makes an order (394) be transmitted to main client computer (310) to create binding.Be used for productivity suite (for example, the Microsoft Outlook on the client computer (310)
Figure S2006800427227D00111
) synchronization subsystem (320) receive this order (392) between sync period next time, and as by the binding of creating indicated in the step 5 with a productivity suite project (350).This binding project has the unique identifier (BoundItemId (binding item id) 332) of distributing to it, and is associated with this LOB entity by CorrelationId 334.
Fig. 4 shows how relevant between binding project and the LOB entity is set when creating a new binding project in productivity suite.At first, as by indicated in the step 1 (491) in productivity suite establishment project (430).Then, productivity suite (for example, Outlook
Figure S2006800427227D00112
) in synchronization subsystem (420) create bind command with one and transmit (492) individual LOB system (460), as indicated by step 2.LOB system (460) and the receiving this next time between sync period and create bind command of client computer, and create LOB entity (470), as by shown in the step 3 (493) by CorrelationId 472 signs.LOB system (460) can randomly locate to pass CorrelationId (472) back client computer (410) in step 4 (494), wherein client computer (410) can be associated this CorrelationId (434) then with this binding project (430), shown in step 5 (495).In some cases, CorrelationId (472) is not passed back productivity suite.
Fig. 5 shows how to change being correlated with between binding project and the LOB entity in productivity suite when upgrading or delete a binding project.At first, as by indicated in the step 1 (591) in productivity suite change project (530).Then, productivity suite (for example, Outlook
Figure S2006800427227D00113
) in synchronization subsystem (520) as giving LOB system (560) by upgrading or delete transmission (for example, by the web service call) indicated in the step 2 (592).LOB system (560) and client computer (510) receive this renewal/deletion bind command between sync period next time, and revise or LOB entity (570) that deletion is identified by CorrelationId 572, shown in step 3 (593).Productivity suite is not known under some situation of CorrelationId (534) therein, and LOB system (560) determines to revise or to delete which LOB entity (570) with reference to binding logo symbol BoundItemId 532.
Fig. 6 shows when by the LOB system update or delete relevant how change the between a binding project time binding project and the LOB entity.At first, as by in LOB system (660), revising indicated in the step 1 (691) or deletion LOB entity (670).LOB system (660) transmits request (692) to upgrade or to delete by CorrelationId (672) in the request of delivering to server (692) and the LOB entity that at least one was identified among the BoundItemId to server (640).Server (640) receives this request (692), and to the application formatted device of this request (692) (650), makes as changes or the order or the control messages (694) of deletion binding project by having transmitted indicated in the step 4.Be used for productivity suite (for example, Outlook on the main client computer (610)
Figure S2006800427227D00121
) synchronization subsystem (620) receive this order between sync period next time, and as by revise indicated in the step 5 (695) or deletion to the binding (for example, BoundItemId 532 and CorrelationId 634) of suitable binding project (630).
It can be company's network internal or outside client machine that above-mentioned synchronization subsystem is deployed to.Envisioned to the Virtual Private Network of company's network, promptly VPN connects, and connects via the HTTP type remote synchronization such as server applications such as Microsoft Exchange Server also to be fine.LOB can be used as the background thread operation on the client devices synchronously, as long as productivity suite moves.The change of having done in productivity suite is submitted to the LOB system via any suitable RPC mechanism (for example, company's network, VPN, HTTP etc.), and the change expectation of LOB system is only made on company's network.File synchronization can be such as handling via Microsoft Active Directory (current directory) in company's network in any suitable manner, and wherein Microsoft Active Directory is arranged to show the .NETAPI that is used for this purpose.
The definition of example sync cap
For each binding item types, synchro system will depend on that the change (establishment/renewal/deletion) that is taken place carries out different actions.In addition, can be used as the result who handles the inquiry control messages and call " Query (inquiry) " action.Use Microfo Outlook The example sync cap of pattern be defined among the appendix I and further illustrate.Below describe to have specified and to be imported into each in these actions and the information of therefrom returning.
Create (establishment) is called when the processing client side is bound establishment of item by system.Parameter for Create comprises BoundItemId, BoundItemType (binding item types), RequestId (request ID), BoundData (binding data) and CultureName (culture name).BoundItemId is the unique identifier string that is used to the client computer generation of the project of binding.BoundItemType is corresponding to the string of the fully-qualified name of binding item types, comprises solution and version.RequestId is the unique identifier that is used for updating message, repeats to allow the LOB system banner.BoundData is the XML document by the mode-definition that is used for the LOB system, makes that the BoundData that is used to the project of binding is correctly provided.CultureName is the title that should be used for calling from Create the culture of the service condition, description and any other message that draw.Rreturn value for Create comprises CorrelationId, RequestId, BusinessStatus (service condition) and Description (description).CorrelationId is the string (for example, ContactId (contact person ID) has identified the contact person uniquely) that the conduct of LOB generation is used for the unique identifier of item types.RequestId is the unique identifier that is used for updating message, repeats to allow main client identifying.BusinessStatus is the string of short name that must be assigned to the new business state of binding project corresponding to the result as Create.It is the arbitrary value that the LOB system provides, and the content of this value is not made any hypothesis synchronously.Theory is that this value can be used to filter the project that is in equal state.But Description is an optional string, and it is the explanation about BusinessStatus.It will be the part of binding project information, make the description that it can be on the UI to be showed when needed.
Update is called when processing client side binding project is upgraded by system.Parameter for Update comprises BoundItemId, BoundItemType, RequestId, CorrelationId, OldBoundData (old binding data), NewBoundData (new binding data) and CultureName.Rreturn value for Update comprises CorrelationId, RequesId, BusinessStatus and Description.RequestId is the unique identifier that is used for updating message, repeats to allow the LOB system banner.If sent the updating message that repeats, then must send identical RequestId.OldBoundData is corresponding to the XML document from all BoundData of the binding project of last synchronous regime.
Delete (deletion) is called when the processing client side is bound deletion of items by system.Parameter for Delete comprises CorrelationId, BoundItemId, BoundItemType, RequestId, BoundData and CultureName.Rreturn value for Delete comprises CorrelationId, RequestId, BusinessStatus and Description.
QueryResult (Query Result) is called when handling the inquiry control messages by system.For the parameter of QueryResult is the BoundData of the RequestId of message and BoundItemType, CorrelationId and optional binding project for all existing specified type.QueryResult there is not rreturn value.
The definition of example control messages
This section has been specified desired information in each control messages type.Control messages comprises: create control messages, upgrade control messages, delete control messages and inquiry control messages.
Create control messages and comprise the field that is used for the following: BoundItemId, CorrelationId, BoundItemType and BoundData.Upgrade control messages and comprise the field that is used for the following: CorrelationId, BoundItemType and BoundData.The deletion control messages comprises the field that is used for the following: CorrelationId and BoundItemType.The inquiry control messages comprises the field that is used for BoundItemType.
BoundItemId is the unique identifier that will distribute to new binding project.BoundItemId is generated by formatter as will be described in more detail in the following.BoundItemType is corresponding to the string of the fully-qualified name of binding item types, comprises solution and version.BoundItemType can be used to locate corresponding binding project definition by system, and it is how synchronous with the LOB entity that it has described the characteristic and the productivity suite project that will be bound to productivity suite.As mentioned above, CorrelationId is a unique identifier of being given the binding project by the LOB system assignment, and BoundData is the XML document that comprises all binding datas that are used to the project of binding.
The example synchro system
This system can be arranged to make it not rely on from productivity suite (for example, MicrosoftOutlook ) incident call and detect synchronously.In order to detect change (establishment/renewal/deletion), this system uses a kind of three-dimensional method for synchronous between productivity suite, synchrodata storage (SDS) and the direct information that obtains from the LOB system.Data can change a plurality of entrances from system.Information can change comprising from web visit, mobile device and from many different locations of other client machine.Change and be synchronized to main client machine the most at last (for example, via Outlook / Exchange is synchronous).
The LOB system can detect and handle repetitive requests based on unique RequestId.Communicate by letter to serve by web with the departures (client computer is to server) of LOB system and make, and inbound (server to client machine) message will (for example, MicrosoftExchange) flow into client computer via server application.
Collision detection is also handled when LOB system and productivity suite change same binding project by system.If same binding project that system has detected user and LOB system update then will identify a conflict and this conflict will be suitably handled in the conflict decomposition.
The service response that provides when receiving synchronous web service call immediately is provided in the LOB system.The LOB system need not to receive the affirmation or the notice of makeing mistakes about the successful processing of Create, Update, Delete or Query order.
This section has been described the high level communication flow process between LOB system and the client computer.Below each figure the general survey of the possible communication process of being supported is provided.
Fig. 7 shows and is moving back the example communication flow process of (push) operating period between client-server.Push operation can be initiated by client computer (710) or server (750) as will be described.
Step 1 illustrates client computer (710) start flow, wherein changes testing process and is carried out by the system on the client computer.At step 1 place, the synchronous logic in the system (730) sign new, through that upgrade and deleted binding project, and create the virtual change request list that (791) need be submitted to the LOB system.This virtual list can provide such as fictionalizing in the row of the standing in line formations such as (VQQ 712).This tabulation is processed when having the connection (for example, the web service call 792) of LOB system (for example, server 750) at step 2 place.If do not identify at step 2 place and being connected of LOB system, then retry should tabulation when operation changes testing process next time.
When creating virtual request list, this system considers that also the new control messages (establishment, renewal, deletion from LOB are notified, from control messages tabulation 714) of importing into also suitably solves or the initiation conflict to detect.Conflict has been revised same project or has been attempted to upgrade a project and another Founder detects when attempting to delete this project a side by synchronous logic (730) in productivity suite and LOB system.For each the detected change that does not lead to a conflict (create, upgrade, delete), system comes the submission request to LOB system (for example, server 750) by calling such as the web service of describing (792) in the sync cap definition.
When also can in the LOB system relevant action taking place, LOB system (server 750 that for example, has LOB application program 760) triggers the execution that client computer (710) goes up establishment, renewal, deletion or query actions.At step 3 place, the web service (793) that the LOB system call is showed by formatter (770).Under the situation of request to create, formatter (770) returns and will be used to identify unique ID of new binding project by system.About the details of the information that sends as the part of web service call, sync cap definition one joint of discussing referring to this place.
At step 4 place, formatter (770) generates control messages (794), and sends it to appointment mailbox (for example, the Outlook that is associated with productivity suite
Figure S2006800427227D00161
Mailbox).Control messages (794) sends from a specified account.When control messages (for example is sent to target mailbox, by Microsoft ExchangeServer, or a certain other Email and LIST SERVER 780) time, it is according to preventing that the server side rule to the accident of control messages is deleted from being moved to a hidden folder automatically.This server side rule safeguards that by client computer (create and create again) is (for example, referring to Outlook
Figure S2006800427227D00162
The plug-in unit standard is to obtain more details).
At step 5 place, via control messages (795) being sent to client computer (710) for the mechanism of the formative email type of productivity suite application (720).Client computer (710) is located to handle this control messages (795) by carrying out the synchronizing process of creating, upgrading and deleting the binding project as required in step 6 (796).When control message processing, this system considers that also need be delivered to this locality that the LOB system suitably detects and mark conflicts changes (establishment, renewal, the deletion of binding project).
Fig. 8 and 9 shows draw (pull) that can use and operates in another example system, wherein draw and can be initiated by touch (nudge) that synchronous web service or LOB system are simulated.
Synchronous logic
It is because the user directly or by synchronous (for example, web access interface) changes them indirectly that the binding project can be changed.Need item compared and determine that the difference between client computer and the LOB system determines whether the change on the side to be propagated into the process of opposite side.
Change can take place with one of four kinds of modes.The first, the user can change the binding project in productivity suite.System detects and submits the change request to from trend LOB system.The second, change can be made by another client computer, and this is by influencing productivity suite client computer and LOB system synchronously simultaneously.Change to productivity suite and LOB system can take place with any delay by any order.The 3rd, change can be made by smart phone (Smartphone), web visit or any other means, and arrives productivity suite via server sync.These changes need be found by a synchronous process.The 4th, change can be made in LOB system itself.Each class changes and must all be taken into account by synchronizing process.
Local synchrodata storage (SDS) stores prototype version.SDS and productivity suite and LOB system synchronization also are used to follow the tracks of increment between the two subsequently.Increment is added to the virtual request queue that comprises all services request of LOB system then.Renewal process determines when and change need be propagated into the LOB system.Synchronous logic forms request, and is having when connection that it is submitted to the LOB system.When upgrading productivity suite, synchronous logic uses the information of LOB system to upgrade productivity suite information (for example, Outlook ), upgrade SDS then.
Most of binding datas are two local existence: as the project in the productivity suite and in the LOB system.Suppose that each copy is included in non-existent excessive data on another copy.Synchro system is responsible for synchronously: a characteristic subclass of sharing is stored in the BoundData characteristic of binding project, and as synchronous result, can create or ruin the existence of the project that unbinds, for example project.Synchro system is supposed single authenticity definition: the LOB system is always correct.Therefore simultaneously, synchro system, and is preserved relevant its hypothesis and is stored in independent copy in the LOB system without any direct visit the LOB entity in SDS.
Synchronizing process can be divided into several different stages.In cleaning (sweep) stage, all binding projects and SDS in the mailbox are compared.Any mismatch of the referential integrity between mailbox and the SDS is detected and is repaired immediately.Detect modified project and mark it for further processing.Detect deleted project then and it is passed to synchronizer, make suitable removal request can be sent to the LOB system.In some implementations, each stage of above-mentioned synchronizing process can be merged into single integrating process, and wherein various functions (for example, binding, cleaning, solution etc.) can be combined into a shortcut calculation.This shortcut calculation can be realized improved execution speed or realize some other improved efficient (for example, reduce storer/dish and use, eliminate redundancy etc.).
Any control messages that is identified is handled in subordinate phase.Then, carry out the characteristic upgrading to being marked as all items of having revised.Compare and notify synchronizer with the XML data representation and the SDS copy through upgrading of gained.Synchronizer moves in background thread, and uses the SDS copy in this embodiment.Synchronizer is responsible for submitting to Create, Update and Delete request and is handled inquiry.
The SDS copy comprises above-mentioned identical characteristic.Under normal circumstances, be identical with EntryID in the SDS copy (inlet ID), BoundItemId, BoundItemType with CorrelationId for the productivity suite project.Any difference between productivity suite project and the SDS copy is interpreted as upgrading the request of LOB entity.If not, then referential integrity is broken, and must further investigate the productivity suite project.The main cause of any difference is: project is to be created by the user, this project also there is not the SDS copy, but the BoundData characteristic is readable, and this project duplicated, moves or deletion by the user, and the mapping between EntryID and the BoundItemID is broken; Have relevant with single SDS copy all zero, one or more project, and the BoundData characteristic is readable, the user has received request for conference or the task requests through upgrading; It has ruined corresponding appointment or task (binding project).The EntryID of project is retained, but the BoundData characteristic no longer is readable.Received the copy of outer binding project from another user.The BoundData characteristic is not readable, and this project is not had corresponding copy in SDS.One copy or a binding project have been sent to another user and then being beamed back, and this is the modification of previous possibility, and it can not be identified as special circumstances.Data corruption may take place.
Having so built-in hypothesis: BoundItemID is unique (major key), and the combination of BoundItemType+CorrelationId also is unique (inferior key).These restrictions must put teeth in the SDS database.Certainly, EntryID also is unique in the mailbox.Wherein the BoundData characteristic is readable or wherein be stored in inner repeat property productivity suite project (for example, the Outlook that do not match
Figure S2006800427227D00181
Any project of the identical characteristics project) (BoundItemId, BoundItemType and CorrelationId) is considered to destroy.As a general rule, this destruction project is automatically terminated binding.Any duplicated project is (as an above Outlook
Figure S2006800427227D00182
When project has identical BoundItemID) be detected, and or be converted into a new binding project, perhaps be disengaged binding; Original project and SDS copy coupling (under situation about moving, getting a copy).
Communication process
Figure 10 shows productivity suite on the client computer and another example communication flow process between the LOB system.LOB system (1070) can initiate the renewal to the binding project via control messages (create, upgrade and deletion).Formatter (1080) service is created control messages as LOB system (1070) asks.This control messages is transmitted to productivity suite via the email message in the mailbox (1010).The server side rule moves into (hiding) file (for example, control messages file 1020) of an appointment with this control messages, and from this document folder, these control messages are chosen by control messages processor (1030).Establishment, renewal and removal request are handled immediately; And query requests is enqueued onto among the SDS (1050), and is handled by synchronizer (1060).Binding device/swabbing pig/resolver (1040) service (or depending on realization, a plurality of services) is arranged to: all binding projects in the mailbox (1010) and SDS (1050) compared, and the mismatch/change in the sign binding project.
Although right and wrong are not usually seen, still have important situation to relate to the LOB system one given user is created all binding projects again.This can be used for filling mailbox with the part that initial binding project and the disaster when some project has been lost or become destruction are found.A kind of modification of this situation can be used for existing binding project is upgraded to a new binding definition (pattern).It also can ask the information (inquiry) about the current state of binding project.Another common use is that the mailbox (1010) to the user sends regular email message; Do not relate to synchro system in this case.
Sender's identity is used for effective control messages is distinguished mutually with unauthorized (or deception) control messages.Information in the control messages can be encrypted to protect its privacy.
Master machine is responsible for control message processing, upgrade feature, manages conflict and is submitted renewal to LOB.It keeps SDS and mailbox synchronous.Less important machine can be used for upgrading the binding project via UI.It also uses the SDS database of synchronous structure its oneself, but has a certain serious difference.Less important machine is control message processing not, and does not finish the characteristic upgrading between sync period, and less important machine is not submitted to the LOB system yet and changed.When making up SDS, the data in the less important machine hypothesis mailbox are correct.The failure of any renewal SDS that causes owing to the referential integrity problem is voicelessly ignored, and will be transmitted to less important machine because the hypothesis master machine manages conflict the most at last and solves.This regular important results is the good working condition that the SDS on the less important machine does not comprise any pending change, so it can not be upgraded to master machine.
Server can be arranged to for being distributed to the purpose of each less important client machine and safeguarding a synchronous high-speed cache (for example, be similar to SDS, but do not comprise binding data information) from the service condition response of server.Server can periodically be shifted change onto less important client computer, makes less important client computer have the fresh copy of relevant SDS data.
Synchronization subsystem
Synchronization subsystem is shown in Figure 11, and comprises following primary clustering: controller (1102), binding project manager (1106), binding item package device (1112), swabbing pig, resolver (1109), control messages processor (1110), data set provider (1107) and synchronizer (1105).
Controller (1102) is the common component that is used to control synchronizing process.
Binding project manager (1106) is the common component that is used to create and/or directly visit the binding project.Binding item package device is that the productivity suite project is encapsulated as the binding project, or the public wrapper of the binding of the project of releasing.In some implementations, the function of binding project manager (1106) can be used as the part of controller (1102) or the part of another assembly is comprised.
Swabbing pig (1112) is the intraware that is used to find out the binding project that needs investigation (owing to having changed) since generation is synchronous for the last time.In some implementations, the function of swabbing pig (1112) can be used as the part of controller (1102) or the part of another assembly is comprised.
Resolver (1109) is to be used to investigate the binding project, and or local solution changes (via the characteristic upgrading) and/or mark changes to carry out complete synchronous intraware.In some implementations, the function of resolver (1109) can be used as the part of controller (1102) or the part of another assembly is comprised.
Control messages processor (1110) is the intraware that is used to handle from the control messages of the message that sends at formatter of the specified folder that is monitored (1111).Control message processing is with renewal productivity suite project under the situation of establishment/renewal/deletion verb, or the submission querying command is handled for synchronizer assembly.In some implementations, the function of control messages processor (1110) can be used as the part of controller (1102) or the part of another assembly is comprised.
Data set provider (1107) provides the intraware to the visit of SDS tables of data (1108).In some implementations, the function of data set provider (1107) can be used as the part of controller (1102) or the part of another assembly is comprised.
Synchronizer (1105) is an intraware of being responsible for following item: notice LOB system when creating on client computer, upgrading or deleting the binding project, successfully upgrading synchrodata storage (SDS1108) after the notice, handle the inquiry control messages, and the state of report synchronizing process.In some implementations, the function of synchronizer (1105) can be used as the part of controller (1102) or the part of another assembly is comprised.
Change is illustrated as follows synchronously by Figure 12.Change to the binding project can be on master machine (enabling the machine of OBA) or such as serving (for example, Outlook from web
Figure S2006800427227D00201
Web visit, i.e. OWA) or the client computer of a certain other non-OBA of enabling and mobile device etc. make by another external interface.Depend on to change where make, system will use different slightly code path to come these changes synchronously.
Management binding project: the client computer of enabling
The user can allow to carry out creating in the synchronous client computer, upgrade and delete the binding project such as waiting by interpolation annex or plug in component.System detect to change, and will change automatically and ask to submit to the LOB system.This request is processed, and the LOB system beams back an application layer success or a failure response.This response is received by client computer, and upgrades the application program service condition of binding project.In new binding project (for example, at Outlook
Figure S2006800427227D00211
In create) situation under, be used for this binding project relevant from the response of LOB system by system with a LOB entity.
Management binding project: web visit
The user is by its mailbox of web access.The binding project shows the user as standards project.The user can normally change standard information, but can not change extend information.Renewable or the existing binding project of deletion of user, but new binding project can not be created, except the situation of duplicating existing binding project (creating indirectly).When the user turns back to its master machine, synchronous by server application (for example, by Microsoft Exchange) by the change that the web visit is made.System detects this change, and automatically the LOB system is submitted in suitable change request.
Management binding project: non-client computer of enabling
The user can use the productivity suite client computer that is not activated to visit its mailbox.The binding project occurs as standards project.The user can normally change standard information, but can not change extend information.Renewable or the existing binding project of deletion of user, but new projects can not be created.The user is synchronous with server application (for example, Microsoft Exchange) then.When the user turned back to its main client machine, the change of making in non-client computer of enabling was synchronous from server application.System detects this change, and automatically the LOB system is submitted in suitable change request.
Management binding project: mobile device
The user visits its mailbox by mobile device.Not for mobile device provides special support, they only visit the same processing with web.The binding project is demonstrated to the user as standards project.The user can normally change standard information, but can not change extend information.Renewable or the existing binding project of deletion of user, but new binding project can not be created.When the user turned back to its main client machine, the change of making in mobile device was synchronous by server application (for example, Microsoft Exchange).System detects this change, and automatically the LOB system is submitted in suitable change request.
Management binding project: a plurality of client computer of enabling
The user has " less important " client machine of " master " client machine and any amount, and wherein each machine has the synchronous client application between a mounted permission productivity suite application and the LOB system.User creatable, renewal or delete binding project in any machine.The change of making on a machine will be synchronized to other machine via server application (for example, Microsoft Exchange), but in one embodiment, only master machine can with the LOB system synchronization." master " machine is specified when mounted; Other machine will be considered to " less important " machine.The quantity of the less important machine that can have the user is not specifically limited.But when to being connected the time spent on the master machine of LOB system, system will submit to required change to ask the system to LOB automatically.
Described system can be arranged to make for being distributed to the purpose of each less important client machine from the service condition response of server and safeguarding a synchronous high-speed cache on server.For this example, the isochronous cache of server upgraded before or after each main client computer cleaning.The isochronous cache of server can comprise all data from SDS, except binding data.According to cleaning internal time table, the isochronous cache of server can be from downloaded to the SDS that wants each time client computer oneself.
Management binding project: the propagation of change
When the change to the related service entity is to make in the LOB system, will be via formatter announcement server application program.Change notice and be sent to the client computer of enabling that may need this change is applied to the project of binding.Be pushed out owing to change notice, so client computer need not examination and upgrade, and can directly respond and do not wait for lock in time of scheduling.
Method for synchronous
Figure 13 is the process flow diagram that is used for the example method for synchronous.System's swabbing pig process can periodically be located also " mark " need be by synchronous binding project, and wherein these projects are placed in the logic tabulation for synchronously (tabulation synchronously).For each project in the synchronous tabulation, generate establishment, renewal or removal request (CUD request) and it is stored in the formation of setting off (for example, from Fig. 7 VQQ 712).Initiate a web service call then, the feasible connection that can be established to the LOB system.This web service call can be successfully, fail or generate one connect unusual.
When in response to this web service call when LOB obtains response, set up successful connection.For the successful connection to the web service, system uses from the binding project copy among the information updating SDS of response.Like each item class in the synchronous tabulation, handle other CUD request.
When providing from the LOB system in response to the web service call except that connecting unusual other when unusual, the connection that obtains failing.For the connection of the failure of serving to web, the CUD request is maintained in the departures formation, and is labeled to carry out retry.But initialization is to the retry count of CUD request when having identified the connection of first failure.Retry will continue, up to or set up successful connection, perhaps the maximum attempts that allows on a predetermined time interval reaches a limit.The maximum attempts that allows when reaching and not having when successful, this CUD request is moved to a failure request formation.Do not handle other CUD request, unless realize successfully connecting.
Connect unusually and can have effective authentication cookie and take place during to the examination failure of destination server in client computer.When obtaining connecting from the web service call when unusual, system skips to next project in the synchronous tabulation.
Be used for a synchronous instantiation procedure stream and illustrate, as will be described below by Figure 13.Processing removes beginning at frame 1301, and flow to decision box 1305.
At decision box 1305 places, productivity suite synchro system assessment tabulation synchronously is with need be between productivity suite application and the LOB application program synchronous any binding project of sign.When not binding project in the synchronous tabulation, this processing flow to frame 1310, and system is waiting for a schedule time (for example, X minute) before the assessment tabulation synchronously once more there.When finding the binding project in tabulation synchronously, system determines whether to have reached maximum failure request number at frame 1315 places.When having reached largest request number, handle flowing to frame 1310 once more.Perhaps, handle at frame 1320 places and continue, create CUD request there.
Proceed to frame 1325, this CUD request is placed such as the request queue such as departures such as VQQ 712 grades from Fig. 7.At frame 1330 places, the productivity suite application synchro system is submitted to the LOB system by each request in the request queue of will setting off such as service calls such as web service calls.Proceed to decision box 1335, assess this CUD call request to determine whether this request is successfully submitted to the LOB system.When the success of CUD call request, handle from decision box 1335 and proceed to frame 1340 (upgrading the synchrodata storage there, i.e. SDS).When the CUD call request is failed, handle and flow to frame 1345 from decision box 1335.In some cases, it is unusual to generate connection, and processing flow to decision box 1305 from decision box 1335.
At frame 1345 places, the synchro system that is used for productivity suite application is attempted retry to the CUD call request.At decision box 1350 places, system determines whether that driven call request receives response.When this responds successfully, handle and flow to frame 1340 from decision box 1350, upgrade SDS there.When the response failure, handle and flow to decision box 1360 from decision box 1350.If do not receive response, then handle from decision box 1350 and flow to frame 1355, system waited for overtime expiring before frame 1345 places attempt another retry there.
At decision box 1360 places, system determines whether to have reached the determined maximum number of retries to the CUD call request.When reaching determined maximum number of retries, handle proceeding to frame 1365, the CUD request is moved to a failure formation there.When not surpassing determined maximum number of retries, system increases progressively the internal retry counter at frame 1370 places, and advances to frame 1355 to wait for another retry.
Quote synchronous project
As mentioned above, binding is created between LOB entity and PS (productivity suite) project.Although to any direct visit of LOB entity, its hypothesis of SDS maintenance is not stored in the independent copy in the LOB system to synchro system.When the binding between establishment LOB entity and the PS project, the copy of synchronous PS project can be placed SDS, make the PS project to come index with the CorrelationId that is associated with this LOB entity.In other words, the PS project that is associated with the LOB entity can be retrieved from SDS with reference to CorrelationIs.Because the PS project can be retrieved with reference to CorrelationId, therefore can realize to utilize a plurality of interested application program, plug-in unit or other software approach (for example, rear end Workflow system) of PS project.
In one example, the LOB application program can (for example, CorrelationId) communication via e-mail be sent to productivity suite application with the LOB identifier.E-mail communication comprises the embedding information of quoting the LOB project.For example, in the stem that CorrelationId can be embedded in email message is associated.E-mail communication need not to comprise (embed or otherwise) LOB project itself, because CorrelationId quotes this LOB entity.In case receive email message, the electronic mail processing program that is used for productivity suite can be quoted the specific productivity suite project of this LOB identifier in the sign of shade or synchrodata storage synchronously.
In another example, the user can quote the productivity suite project with link (for example, the URL of any amount of form link is such as HTTP, HTTPS, FTP, FTPS, OBA etc.) that quote the LOB identifier that is associated with PS project among the SDS.
In another example,, can activate action pane, task pane or other software approach when LOB system during to productivity suite system send Email message.In case be activated, this software approach CorrelationId by reference comes retrieval productivity suite project from SDS, then to this productivity suite project implementation action.
Can be caused establishment, renewal or the deletion of productivity suite project by the action that software approach is carried out on the productivity suite project, this then can be as described above and the LOB system synchronization.The LOB system LOB identifier in software approach and the E-mail communication by reference comes effectively task to be conveyed to the productivity suite user.
In an example software method, promptly can pass on to the user and finish and the request of checking or ratifying that is associated with the synchronous specific productivity suite project of the LOB entity that identifies with the LOB identifier from the E-mail communication of LOB system.This E-mail communication can be transmitted by the LOB system when the deadline date in the LOB system arrives or when the specific user by the LOB system provides automatically.This Email can be by the LOB system by (for example transmitting information to formatter, via the XML data representation, via text, via the data that embed etc.) to create, formatter is cooperated with Email and LIST SERVER (seeing for example Fig. 7) then and is created email message.Email can emphasize this demand with finalization and productivity suite project associated action, further explanation etc. is provided, wherein Email can be quoted the task in the Workflow system of rear end.Because productivity suite application can be interpreted as task with the link that is embedded in the E-mail communication, so actual task information can be presented automatically.The user can select and follow this link then to open the task items in the productivity suite application, and the synchronous backend information that wherein is associated can store with the XML data representation.Because the LOB identifier can be embedded in the link, therefore any required and productivity suite project associated action can be taked by configuration process program (for example, URL handling procedure) suitably.
The definition of productivity suite project interface
Can utilize various interface (UI) list and mutual that promotes to customize UI with other of productivity suite project.Various interface can be visited from application code, and provides between productivity suite project and application code.There is other one group of interface that can be when operation uses between engine and the application code.As described, can utilize metadata to define the UI list.Although the many examples that below provide are with reference to Microsoft Outlook
Figure S2006800427227D00251
Describe, but these examples are equally applicable to any productivity suite application.Use is used for Microsoft Outlook
Figure S2006800427227D00252
The example of productivity suite project interface definition of pattern will in appendix II, further illustrate.
Generally speaking, can be Outlook such as Microsoft
Figure S2006800427227D00253
Define with lower interface Deng productivity suite application, that is: IWindow, IWindowCodeBehind, IBoundItem and IBoundItemManager.Appendix III further shows and is used for and productivity suite application (for example, Microsoft Outlook
Figure S2006800427227D00261
) in the definition of various interface, method and button.onrelease of project interface.
In one embodiment, the IWindow interface has been described the normally Outlook of the packing of detector window
Figure S2006800427227D00262
The behavior of project comprises for memory access and obtains bottom Outlook
Figure S2006800427227D00263
The definition of project, and all methods that are used to define pane and dialog box.The IWindows interface definition comprises:
IntPtr?Handle?{get;}
The handle of the window that this acquisition is used to pack.
object?Native?{get;}
This returns the object that is used for bottom productivity suite project.
IBoundItem?Item{get;}
This returns the binding project that shows in the window of packing.
IBoundItem?AssociatedItem?{get;}
This returns the binding project that is associated with the window of packing.
void?ShowPane(XmlNode?context;}
This method allows application developer to show a zone (for example, information bridge framework (Information Bridge Framework), i.e. IBF zone) in the application program pane.
Outlook The interpolation annex is handled the complicacy with suitable size and the unsteady pane of position display.Context is the required information of metadata of selecting to describe the pane content.
void?ShowDialog(XmlNode?context;}
This method allows application developer to show dialog box in a zone of application program pane.Context is the required information of metadata of selecting to describe the dialog box in this pane.
void?RegisterPage(IXamlPage?xamlPage}
This is called when creating a new XAML renderer engine by the window manager service.
XamlPage is the interface to the XAML page of new establishment.
In one embodiment, the IWindowCodeBehind interface definition can be by the incident of application developer with its oneself self-defined code process.The IWindowCodeBehind interface definition comprises:
This method of void OnInit (IWindow window, IServiceProvider serviceProvider) is called when detector window (being designated as initialized IWindow) is opened and has specified the covered code procedure set that is associated in metadata.This method is transmitted to realize that the developer can be used for visiting the object of this window and the IWindow interface of the productivity suite project that is associated.
void?OnSelectControl(string?name,string?param)
This method is called when selecting a self-defined solution control or button.The title of solution control defines in the SolutionControls XML as the transmission of title independent variable, thereby allows application developer suitably to assign action.And the parameter that defines in metadata is passed to this method and defines in SolutionControls XML.
void?OnSelecTab(int?index,string?name,string?caption)
This method is called when the user clicks in the detector window different options card.The index parameter be selected tab based on zero order.Parameter name is the title of the tab of appointment in the XAML page.The caption parameter is to be appointed as the explanatory note of the tab of text in the XAML page.
void?OnNewPage(IXamlPage?xamlPage)
This method is called for the new XAML engine wrapper of window creation one time.XamlPage is the XAML page of being created.
In one embodiment, IBoundItem interface packing productivity suite project and provide visit to the characteristic of mapping according to BoundItemDefinition.The IBoundItem interface definition comprises;
string?BoundItemId?{get;}
This obtains the ID of binding project, is sky if project is not bound.
string?CorrelationId?{get;}
This obtains as by the ID of the binding project of LOB system definition, the ifndef project then be a sky.
string?BoundItemType?{get;}
This obtains the type that is associated with the project of packing, is equivalent to the title of BoundItemDefinition, and if project do not bind then be sky.
BoundItemDefinition?BoundItemDefinition?{get;}
This obtains the definition of binding.
SynchronizationStatus?SynchronizationStatus?{get;}
This obtains the synchronous regime of binding project.
string?BusinessStatus?{get;}
This obtains the service condition of binding project.
string?BusinessDescription?{get;}
This obtains the business description of binding project.
object?OutlookItem?{get;}
This acquisition is used for the object of packaged project.
string?EntryId?{get;}
This obtains the inlet ID of packaged project.
string?MessageClass?{get;}
This obtains the classes of messages of packaged project.
Date?Time?LastModified?{get;}
This obtains the last modification time stamp of packaged project.
string?XmlData?{get;set;}
This characteristic of returning the mapping of packaged project is gone here and there as an XML.
string?BoundData?{get;}
This characteristic of returning the mapping of packaged project is gone here and there as an XML who encrypts.
XmlDocument?GetXmlDocument?()
This structure and the characteristic of returning mapping are as XML document.XML is held the field sync that is associated with project with the packing in the productivity suite.
object?GetProperty(string?name);
This returns the value of the characteristic of mapping according to title.
void?SetProperty(string?name,object?value);
This method is according to the value of the characteristic of name changing mapping.
event?PropertyChangedEventHandler?PropertyChanged;
This incident causes when the value of characteristic changes.
event?EventHandler<PropertyErrorEventArgs>PropertyError;
When makeing mistakes to the characteristic apportioning cost time, this incident causes.
void?Validate();
The contrast of this method confirms to comprise the XML of the characteristic of mapping from the XML pattern of BoundItemDefinition.
void?Save();
This method is confirmed the characteristic of mapping and is preserved the productivity suite project
void?PromoteProperties();
In synchronous XML document of this method and the productivity suite such as the value of the characteristic of the mapping between the various fields such as UserProperties.The field of omitting in the productivity suite is created where necessary again.Productivity suite project method is thus preserved, and is called to show preservation.
void?RemoveProperties();
This method removes all self-defined productivity suite fields (UserProperties) according to BoundItemDefinition.
void?BindItem(string?definition);
This method converts the productivity suite project to the binding project.
void?BindItem(BoundItemDefinition);
This method converts the productivity suite project to the binding project according to BoundItemDefinition.
void?UnBindItem();
This method is removed the binding of productivity suite.
IBoundItemManager service is the common interface that is used to handle the whole bag of tricks of binding project.
The IBoundItemManager common interface comprises to give a definition:
IBoundItem?CreateBoundItem(string?BoundItem?Type);
IBoundItem?CreateBoundItem(BoundItemDefinition?definition);
IBoundItem?GetBoundItem(object?item);
IBoundItem?GetBoundItem(string?BoundItemId);
IBoundItem?GetBoundItem(string?BoundItemType,string?CorrelationId);
IBoundItem?GetBoundItem(BoundItemDefinition?definition,string?CorrelationId);
The user interface of metadata driven (UI) list
As mentioned above, can use metadata to create and customize and can be used for Outlook such as Microsoft
Figure S2006800427227D00301
User interface list Deng productivity suite application.Example meta data support described herein is added/is removed control, control layout, setting/change control characteristic, handles the control incident and control is arrived in data binding.Support to the control that adds self-defined structure also can be provided in certain embodiments.
The multiple situation that the UI list that wherein can use metadata to define to be used for productivity suite application is arranged.In some cases, can specify the customizable zone on the list, and other zone can not be customized.In a kind of situation, user interface controls and data are defined by metadata.In another situation, can use metadata right to list interpolation field/value, make list to be customized.In another situation, it is right to use metadata to remove field/value from existing list.In a situation again, can be with the field value on the list to being transformed into another list to adapt to end user preferences.
UI list developer can be by specifying the UI that is used for list/dialog box with meta data definition UI list.The developer has significant flexibility to definition UI list, make that control can be added/remove, the control characteristic can be set up and/or change and list on the layout of various controls can be designated, all these is undertaken by using metadata.
An example UI list is shown in Figure 14 A.The metadata (1401) of describing user interface is generated with the various zones in the definition list by the developer.For example, UI list 1410 is defined as by metadata 1401 and comprises label 1411, graph image 1412 and the control that is used for drop-down menu 1420, selector button 1430 and text input frame 1440.Each dropdown menu controls is shown as including and is used for selecting menu to select the button (1421) of a value in territory.Text input frame control (1440) comprises the scroll button up and down (1441) of the text (1442) imported at text box of being used for rolling.
As shown in Figure 14B, UI list 1410 can customize in some zone of this UI list, and making can be as right by adding other field/value shown in the UI list 1410B.UI list 1410B comprises a new part (1450), and it comprises the label (1411) that is used for " Company Policy " field, and this label comprises the control with the corresponding button (1421) that is used for drop-down menu (1420).
As shown in Figure 14B, UI list 1410 can customize in some zone of this UI list, and making can be as right by adding other field/value shown in the UI list 1410B.UI list 1410B comprises a new part (1450), and it comprises the label (1411) that is used for " Company Policy " (company policy) field, and this label comprises the control with the corresponding button (1421) that is used for drop-down menu (1420).
Shown in Figure 14 C, UI list 1410 can customize in the specific region of this UI list, and making can be as right by removing other field/value shown in the UI list 1410C.UI list 1410 comprises the zone (1460) with text input frame (1440), and text input frame can remove from list 1410C then.
Shown in Figure 14 D, UI list 1410 can define in some zone of this UI list, makes various field/value to being converted into other field/value to be fit to user preference, place etc.In this example, the label (1411) of " Activity " (activity) by name is converted into a new label (1411D) in the UI list 1410, it on UI list 1410 by RNTO " Task Type " (task type).
The developer can use metadata to come reflecting that (for example, each control of the typical event of WinForms) supporting is specified the button.onrelease that is used for a given list of thing in his-and-hers watches monocycle border.The developer can specify the title of each button.onrelease in metadata, and the computer-readable/executable code that can be provided for this button.onrelease is to use in the covered code procedure set.The Name ﹠ Location of procedure set also can be used as the part of metadata and catches.
Binding expression can be specified in metadata, to allow data are tied to from data source the various characteristics/territory of the control on the list.Also can use metadata to specify binding from the control characteristic to data source.
The list UI design of described metadata driven comprises one group of basic, the most frequently used control that can be used for designing the UI list.Yet, can be to the control of the more complexity of UI Worksheet self-defining ground structure.One UI presents engine and is arranged to be supported in and presents the self-defined control of fundamental sum in the productivity suite application.In one example, can be at Microsoft Outlook
Figure S2006800427227D00311
In present self-defined list.In another example, can promptly present self-defined task pane among the IBF at information bridge framework.Various self-defined and basic controls can be by the characteristic visit that can obtain (for example, as the form of showing an object model) from the covered code procedure set.Control can be hosted within such as in the various environment such as task pane, list.
Be used to define the example meta data pattern of UI list
Appendix IV shows the example meta data pattern that is used to define the UI list according at least one aspect of the present invention.Example modes among the appendix III is further illustrated by Figure 15 and 16, and they show various control types and the class that is used for the control that can define in metadata.
As shown in figure 15, all controls have the basic control type (1501) that comprises a series of fundamental characteristics and elementary event.The example of fundamental characteristics comprises the layout and the size (for example, Width (width), Height (highly), Top (top), Left (left side) etc.) of control.The example of elementary event comprises Click (click), GotFocus (acquisition focus), LostFocus (losing focus) etc.Control can be an any kind, some other universal class (1504) that maybe can derive from from other type such as text box (TextBox) (1502), check box (CheckBox) (1503).
Input (1502) comprises one group of particular characteristics, the minimum line number of using such as text justification, TextField.length, text box, wrapping text characteristic or the like.Check box control (1503) comprises the check box specialized property, such as text justification, frame is checked or cancellation state of final election and any particular event relevant with check box, as the state of check box from checked to the cancellation final election change or opposite change.
Each control is uncle's control (ParentControl) (1505) inherited characteristics also, and wherein father's control can be page type control (Page) (1506) or panel type control (Panel) (1507).Page type control (1506) has various specific characteristics, such as Page Name, data designated source, procedure set (for example, covered code etc.), typonym and such as any other incidents such as loading or the like.Panel type control (1507) is without any particular community, but has the container that is used for control.
As by shown in Figure 16, list control is different from other control part and is that list control has the child node of specifying the addition item that is used to tabulate.Each list control also has the basic control type (1601) that comprises a series of fundamental characteristics and elementary event as mentioned above.
List control type (ListControl) (1602) comprises one group of particular characteristics, such as showing member path, selected value path, selected value, project source and selected index.The list control type has is appointed as any further type in combo box type (ComboBox) (1603), list box type (ListBox) (1604) and the radio button list type (RadioButtonList) (1605) with list style.
Combo box type (1603) has the particular characteristics of specifying drop-down pattern frame.The particular characteristics that list box type (1604) has the preference pattern that is used to tabulate.Radio button list type (1605) has the particular characteristics of the radio button that is used to specify.
The form of UI list can be by metadata so that layout of using in the list and control extremely flexible way intactly define.For example, it is right to add, remove or change various controls and field/value as described above.Can define button.onrelease by the code in the covered code procedure set part of metadata, feasible default behavior from button.onrelease can be capped.Because the Name ﹠ Location of procedure set can be caught in metadata, therefore the processing to the incident of control is very flexibly.Therefore, the data source of the control on the UI list and the binding between the characteristics field can be specified to data source from the data source to the list or from the control characteristic as required.All these features all present the engine support by what receive metadata and present UI.
Example presents engine and binding feature
An instantiation procedure that is used to present engine is shown in Figure 17.The UI list is in the metadata at frame 1701 specifies.Frame 1702 expression UI present engine, and it presents all features from the UI list from frame 1703-1711.In case presented the UI list, output is provided, make the object generated can be hosted within the task panel at frame 1712 places, on self-defined list or in any other the required zone, main place that can use in conjunction with productivity suite application.
At frame 1703 places, UI presents engine and resolves this metadata, and identifies the various controls that wherein comprised.At frame 1704 places that comprise frame 1705-1710, present each different control that engine instance turns to the UI definition, and the control of UI list is described in output.This output is used for generating a group objects at frame 1711 places, and wherein each object can be with to representing such as acceptable forms of host such as .NET control object.
At frame 1705 places, instantiation one control.The fundamental characteristics of this control is set at frame 1706 places, and any control specialized property of this control is set at frame 1707 places.At frame 1708 places, present engine and subscribe to the necessary any control incident of the correct running of control that makes.Proceed to frame 1709, present engine and add this control, and determine such as whether needing any child control at frame 1710 places subsequently for the previous list type control of discussing to the container of father's control.To the process (1704) of all controls repetitions on the list, up to all objects that presented this list by frame 1705-1710 appointment.
As described earlier, UI list developer can be to occurring in the button.onrelease of the control event numbering its oneself on the list.For handling the particular event on the control, in one embodiment, solution development person needs: exploitation one comprises the covered code procedure set of button.onrelease code, specify this covered code procedure set and designated treatment button.onrelease (method) title (should exist in this covered code procedure set) to the particular event of a control in metadata.Example covered code procedure set is following specifies in metadata:
<jaml:Page?Load=″PageLoad″Name=″My?Custom?Page″
xmlns:jaml=″urn-Mendocino/jaml″Top=″0″Left=″0″Width=″320″Height=″400″
Assembly=″CodeBehind,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null″
TypeName=″CodeBehind.PageCodeBehind″>
In one embodiment, this covered code procedure set comes appointment by " Assembly " (procedure set) attribute of " Page " (page) element in the UI meta data file." Page " element is not the root element in the meta data file." TypeName " (typonym) attribute has been specified the class that comprises the button.onrelease method in this procedure set.In one embodiment, each " Page " or UI list only have a covered code procedure set that comprises all button.onreleases that are used for the control on this list.
For specify the button.onrelease be used for the incident on the control in metadata, in one embodiment, this button.onrelease method should be in this covered code procedure set exists as the value corresponding to the attribute of the incident on this control.For example, the required metadata of " Click " (click) incident on capture button (Button) control can followingly be specified:
<jaml:Button?Left=″8″Width=″100″Top=″132″Background=″Control″
Name=″button1″Text=″This?is?a?button″Click=″Button1_Click″/>
Above metadata has been specified for " Click " incident of button control and has been handled by method " Button1_Click ", and this method should exist in the covered code procedure set as a communication method using common.And in one embodiment, the signature of the incident on the signature of this button.onrelease and this particular control in .NET Winforms environment is identical.An example button.onrelease signature that is used for the click event on the button can be expressed as follows: public void Button1_Click (object sender, System.EventArgs e) { }
In one embodiment, UI presents engine load this covered code procedure set when resolving UI metadata and instantiation covered code class (by reflection (reflection)).During resolving the UI metadata as mentioned above, subscribe to all incidents (showing) on this control during instantiation one control by metadata.Thus, when a particular event is caused by the control from the button.onrelease in the code, use the button.onrelease that exists in this covered code procedure set.Being used for the necessary necessary independent variable of processing events transmits by reflecting.
As mentioned above, when data during from a specific data source, data can be bound to the control on the UI list.Data source in metadata such as specifying by following example:
Data?Source<jaml:DataSource?Name=″myDataSource″
Assembly=″DataSourceAssembly,Version=1.0.0.0,Culture=neutral,
PublicKeyToken=null″
TypeName=″DataSourceNamespace.DataSourceClass″/>
" DataSourceClass " (data source class) can realize " IBindData " (binding data) and " INotifyPropertyChanged " (notification characteristic change) interface, and be as follows:
public?interface?IBindData
{
object?GetData(string?path);
bool?SetData(string?path,object?val);
}
public?interface?INotifyPropertyChanged
{
event?PropertyChangedEventHandler?PropertyChanged;
}
public?delegate?void?PropertyChangedEventHandler(object?sender,
PropertyChangedEventArgs?e);
public?class?PropertyChangedEventArgs:System.EventArgs
{
public?virtual?string?PropertyName{get;}
}
" IBindData " interface allows data to bind between data source and control characteristic.In one embodiment, any change that " INotifyPropertyChanged " interface allows data source to take place on this data source with signal indication makes the UI characteristic that is bound to this data source to be updated.Thus, data source needs to cause " PropertyChanged " (characteristic changing) incident once when the characteristic changing in the data source time.The button.onrelease code is once exciting the correlation properties of upgrading on the UI when incident.
In case in metadata, specified data source, then in one embodiment, any characteristic of control can be tied to data from a data source.Figure 18 shows the various characteristics of the data binding that can be used for being assigned to a control characteristic.The binding (1801) of the trigger (1805) of having specified identification data source (1802), be used for the path (1803) of data source, the pattern (1804) that is used to bind and be used for data source.Binding expression must be specified so that can correctly create the binding of control characteristic.
In one example, by " binding expression " being appointed as corresponding to the value of the attribute of control characteristic to come the control characteristic is specified binding.For example, be " Text " (text) characteristic of binding Input, can followingly in metadata, express a binding expression:
<jaml:TextBox?Name=″textBox1″Top=″40″Left=″8″Width=″200″
Text=″{Binding?Source=DataSourceName,Path=CustomerName,
Mode=TwoWay}″Anchor=″Top,Left,Right″/>
For this example, and expression formula Text=" Binding Source=DataSourceName, Path=CustomerName, Mode=TwoWay} " be the binding expression that is used for " Text " characteristic.The data source that defines in the clause representation metadata of " Source " (source).The value of " Path " (path) clause's appointment is delivered to " GetData (string path) " (obtaining data) method of data source when the value of retrieval binding characteristic.It is " TwoWay " (two-way) that " Mode " clause indicates bindtype, and this shows can be by the returned data source from the characteristic changing of UI, and vice versa.In another embodiment, when binding is designated as " OneWay " (unidirectional), can only propagate into the UI control from the change of data source.
" UpadteSourceTrigger " shown in Figure 180 (upgrade source trigger) can be used for specifying and signals that data source UI characteristic changed, and the characteristic value that changes need be transmitted to the incident of data source.Acquiescently, this clause's value can be set as " PropertyChanged " (characteristic changes), this means that it will be given data source with signalisation when a binding characteristic changing.In certain embodiments, " PropertyChanged " clause is only just come into force when using two-way binding.
Can be to participating in all control definition IBindable (can bind) interfaces of data binding.One example interface is defined as:
public?interface?IBindable
{
object?GetBoundValue(string?propName);
void?SetBoundValue(string?propName,object?val);
}
The binding device can be implemented as the part that UI presents engine, or is implemented as a stand-alone assembly.One example binding device can be maintained in the tabulation of all data sources of appointment in the metadata, and the tabulation of all bindings in the metadata.At first, when presenting the UI list, call " GetData (the stringpath) " method (specifying) that is used for related data sources, and the value of importing " Path " clause in the binding expression into is as independent variable at binding expression.This method return type is the value of " object " (object).The control invokes bound " SetBoundValue (string propName, object value) " (bound values is set) to its characteristic, and import the title of binding characteristic and " value " (value) of returning by data source into.This control is responsible for understanding " value " object and is explained that it is suitably to upgrade the binding characteristic.
Except the presenting at first of UI list, as long as data source changes, data source just can use (INotifyPropertyChanged) (notification characteristic changes) incident to the change of binding device notification data source.Which control characteristic the binding device identifies is bound to the data source of change and correspondingly upgrades these characteristics.
As mentioned above, also can utilize self-defined control.Self-defined control can derive from as described above.In one example, should define with lower interface: self-defined control should derive from from class " System.Windows.Forms.UserControl ", realize that " IBindable " interface makes self-defined control participate in data binding, realize " ICustomControl " (self-defined control) interface, definition is used for the default constructor (no independent variable) of this control.The self-defined control of example is defined as follows:
public?interface?ICustomControl
{
void?SetControlProperty(string?propName,string?propValue);
event?ControlEventFiredHandler?ControlEventFired;
}
public?delegate?void?ControlEventFiredHandler(object?sender,
ControlEventFiredArgs?e);
public?class?ControlEventFiredArgs:System.EventArgs
{
public?string?EventName{get;}
public?object?Sender{get;}
public?object?EventArgs{get;}
}
In one embodiment, each self-defined control is realized " ICustomControl " interface, and it has method " SetControlProperty () " (the control characteristic is set) and individual event " ControlEventFired " (the control incident excites).
" SetControlProperty (string propName, string propValue) " method can present engine framework by UI and be used to control that self-defined characteristic is set.This self-defined control is showed and is not included in each self-defined characteristic in the fundamental characteristics (for example, Width, Height, Top, Left etc.) of this control UI presents engine can call " SetControlProperty " method on the self-defined control.Require this self-defined control to understand and explain " sring " (string) characteristic value of appointment in metadata, this characteristic will be delivered to " SetControlProperty " method.
When can being excited by the customized event that self-defined control is showed at control, " ControlEventFired " incident causes.UI presents the engine explanation and has excited an incident and call the button.onrelease that is used for this incident in the covered code procedure set (if this code exists) on self-defined control.UI presents engine and do not know what this self-defined control supports when compiling.Notice presented engine when on the contrary, UI presented engine and can require self-defined control to excite a customized event on this self-defined control.This self-defined control can be created the example of " ControlEventFiredArgs " (the control incident excites independent variable) class, and it is passed to " ControlEventFired " incident that is received by the UI engine." ControlEventFiredArgs " comprises about the information of the title of the incident that is excited, sign sender, also sign need be delivered to any incident independent variable of the button.onrelease that is used for this incident.In case UI presents engine this information has been arranged, this presents the button.onrelease that is used for this incident that engine just is invoked at appointment in the covered code procedure set.
In an example embodiment, self-defined control resides in the .NET procedure set when operation.This self-defined control procedure set can be specified in metadata with following mode:
<jaml:Mapping?XmlNamespace=″urn-Mendocino/CustomControls″
ClrNamespace=″CustomControlNamespace″
Assembly=″CustomControlAssembly,Version=1.0.0.0,Culture=neutral,
PublicKeyToken=null″/>
In one embodiment, " Mapping " (mapping) element is that (Windows demonstrates the basis, obtain in WPF), but it is one to handle pseudoinstruction but not the XML element for WindowsPresentation Foundation from Microsoft.Self-defined control can be specified in metadata by following metadata:
<custom:CustomControl?xmlns:custom=″urn-Mendocino/CustomControls″
Top=″0″Left=″0″Height=″100″Width=″100″.../>
In one embodiment, UI presents engine by the self-defined control of reflection instantiation, and the fundamental characteristics of control at first is set, as Height, Width, Top, Left etc.Then, for other characteristic (self-defined characteristic), the UI engine can call " SetControlProperty () " method on this self-defined control.
UI list developer is UI control and the characteristic thereof in the accessing covered code procedure set as mentioned above.This covered code class needs to realize " IPageCodeBehind " (page code is hidden) interface.An embodiment of " IPageCodeBehind " interface is described as follows:
public?interface?IPageCodeBehind
{
IPageControlCollection?PageControls{get;set;}
}
" PageControls " characteristic can present engine by UI and fill when it presents UI list and instantiation control.An embodiment of " IPageControlCollection " (page control set) interface is to give a definition:
public?interface?IPageControlCollection:ICollection,IEnumerable
{
IPageControl?this[string?name]{get;}
}
In one embodiment, " IPageControl " interface is showed the characteristic that is used for the control on the list.
public?interface?IPageControl
// characteristic ...
string?Name{get;set;}
intTop{get;set;}
int?Left{get;set;}
Color?Background{get;set;}
bool?IsEnabled{get;set;}
int?Height{get;set;}
int?Width{get;set;}
// other characteristic // ... }
The foregoing description permission UI list developer visits the control on the list with the following methods:
MessageBox.Show(this.PageControls[″myButton″].Text);
In one embodiment, " IPageControl " interface is only showed the fundamental characteristics (is common to each control) of a control.The particular characteristics that is used for a control for visit (for example, IsChecked (whether checked) for check box (CheckBox) control), " IPageControl " object can be forced to convert to particular control interface as " IPageCheckBox " (page check box), " IPageTextBox " (page text frame).This allows visit to be used for the particular characteristics of a control.
((IPageCheckBox)this.PageControls[″myCheckBox″]).IsChecked
In one embodiment, " IPageCheckBox " interface derives from from " IPageControl " interface, as:
public?interface?IPageCheckBox:IPageControl
The CheckBox of { //specialized property ...
ContentAlignment?TextAlignment{get;set;}
bool?IsChecked{get;set;}
}
Similarly, show the special interface that is used for each control, this allows UI list developer access control specialized property.
UI presents engine and can be arranged to generate identical .NET control from the metadata of describing the UI list, and no matter this UI list is hosted within task pane or productivity suite list (for example, Outlook
Figure S2006800427227D00411
Self-defined list) in.In one example, the .NET control is as follows by main place.
Task pane can be arranged to support any .NET control of main Su Shixian " IRegion " interface.UI presents framework and can be arranged to comprise realization " IRegion " (zone) interface and main place and present blank (sky) the .NET control of the .NET control that engine generates from the UI metadata by UI.For at the UI of meta data definition shown in task pane list, can use " MSIBF.UI.ShowRegion " self-defining operation to show that UI presents this blank .NET host control part of framework.The input that passes to this " MSIBF.UI.ShowRegion " operation is the metadata that definition will be hosted within the UI list in the task pane.But the host .NET control of MSIBF.UI.ShowRegion operation instantiation blank, and metadata conduct " Data " (data) that will define the UI list pass to blank host .NET control.Host's control can be arranged to call UI and present engine module, and imports the metadata of this UI list of definition into, and returns the .NET control of describing this UI list, and this control is added to host's control then, makes the UI list show in task pane.
Main place is described such as Outlook in productivity suite
Figure S2006800427227D00421
The .NET control of UI lists such as list can pass through to Outlook
Figure S2006800427227D00422
List add can main place .NET control the ActiveX container control add the .NET control of describing this UI list then and realize as the child control of this container control.The ActiveX container control is the part that UI presents framework.
Although illustrated and described example embodiment and application, be appreciated that to the invention is not restricted to accurate configuration and resource described above.Can make the conspicuous various modifications of those skilled in the art, change and modification to arrangement, operation and the details of method and system disclosed herein, and not deviate from scope of the present invention.Owing to can under the prerequisite that does not deviate from the spirit and scope of the present invention, make many embodiment of the present invention, so the present invention returns appended claims.
Appendix I
Example synchronization request pattern
<?xml?version=″1.0″encoding=″utf-8″?>
<xs:schema?id=″Microsoft.OBA.SynchronizationCreateRequest″
targetNamespace=″Microsoft.OBA.SynchronizationCreateRequest″
xmlns=″Microsoft.OBA.SynchronizationCreateRequest″
xmlns:xs=″http://www.w3.org/2001/XMLSchema″>
<xs:element?name=″SynchronizationCreateRequest″>
<xs:complexType>
<xs:sequence>
<xs:element?name=″CultureName″type=″xs:string″/>
<xs:element?name=″BoundData″>
<xs:complexType>
<xs:sequence>
<xs:any?minOccurs=″0″namespace=″##other″
processContents=″skip″/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute?name=″RequestId″type=″xs:string″/>
<xs:attribute?name=″BoundItemType″type=″xs:string″/>
<xs:attribute?name=″BoundItemId″type=″xs:string″/>
</xs:complexType>
</xs:element>
</xs:schema>
The example of synchronization request
<?xml?version=″1.0″encoding=″utf-8″?>
<SynchronizationCreateRequest?RequestId=″String″BoundItemType=″String″
BoundItemId=″String″>
<CultureName>String</CultureName>
<BoundData/>
</SynchronizationCreateRequest>
Example update request pattern
<?xml?version=″1.0″encoding=″utf-8″?>
<xs:schema?id=″Microsoft.OBA.SynchronizationUpdateRequest″
targetNamespace=″Microsoft.OBA.SynchronizationUpdateRequest″
xmlns=″Microsoft.OBA.SynchronizationUpdateRequest″
xmlns:xs=″http://www.w3.org/2001/XMLSchema″>
<xs:element?name=″SynchronizationUpdateRequest″>
<xs:complexType>
<xs:sequence>
<xs:element?name=″CultureName″type=″xs:string″/>
<xs:element?name=″NewBoundData″>
<xs:complexType>
<xs:sequence>
<xs:any?minOccurs=″0″namespace=″##other″
processContents=″skip″/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element?name=″OldBoundData″>
<xs:complexType>
<xs:sequence>
<xs:any?minOccurs=″0″namespace=″##other″
processContents=″skip″/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute?name=″RequestId″type=″xs:string″/>
<xs:attribute?name=″BoundItemType″type=″xs:string″/>
<xs:attribute?name=″BoundItemId″type=″xs:string″/>
<xs:attribute?name=″CorrelationI?d″type=″xs:string″/>
</xs:complexType>
</xs:element>
</xs:schema>
The example of update request
<?xml?version=″1.0″encoding=″utf-8″?>
<SynchronizationUpdateRequest?RequestId=″String″BoundItemType=″String″
BoundItemId=″String″CorrelationId=″String″>
<CultureName>String</CultureName>
<NewBoundData/>
<OldBoundData/>
</SynchronizationUpdateRequest>
Example removal request pattern
<?xml?version=″1.0″encoding=″utf-8″?>
<xs:schema?id=″Microsoft.OBA.SynchronizationDeleteRequest″
targetNamespace=″Microsoft.OBA.SynchronizationDeleteRequest″
xmlns=″Microsoft.OBA.SynchronizationDeleteRequest″
xmlns:xs=″http://www.w3.org/2001/XMLSchema″>
<xs:element?name=″SynchronizationDeleteRequest″>
<xs:complexType>
<xs:sequence>
<xs:element?name=″CultureName″type=″xs:string″/>
<xs:element?name=″BoundData″>
<xs:complexType>
<xs:sequence>
<xs:any?minOccurs=″0″namespace=″##other″
processContents=″skip″/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute?name=″RequestId″type=″xs:string″/>
<xs:attribute?name=″BoundItemType″type=″xs:string″/>
<xs:attribute?name=″BoundItemId″type=″xs:string″/>
<xs:attribute?name=″CorrelationId″type=″xs:string″/>
</xs:complexType>
</xs:element>
</xs:schema>
The example of removal request
<?xml?version=″1.0″encoding=″utf-8″?>
<SynchronizationDeleteRequest?RequestId=″String″BoundItemType=″String″
BoundItemId=″String″CorrelationId=″String″>
<CultureName>String</CultureName>
<BoundData/>
</SynchronizationDeleteRequest>
Example sync response pattern
<?xml?version=″1.0″encoding=″utf-8″?>
<xs:schema?id=″Microsoft.OBA.SynchronizationResponse″
targetNamespace=″Microsoft.OBA.SynchronizationResponse″
xmlns=″Microsoft.OBA.SynchronizationResponse″
xmlns:xs=″http://www.w3.org/2001/XMLSchema″>
<xs:element?name=″SynchronizationResponse″>
<xs:complexType>
<xs:sequence>
<xs:element?name=″BusinessStatus″type=″xs:string″/>
<xs:element?name=″Description″type=″xs:string″/>
</xs:sequence>
<xs:attribute?name=″RequestId″type=″xs:string″/>
<xs:attribute?name=″CorrelationId″type=″xs:string″/>
</xs:complexType>
</xs:element>
</xs:schema>
The example of sync response
<?xml?version=″1.0″encoding=″utf-8″?>
<SynchronizationResponse?RequestId=″String″CorrelationId=″String″>
<BusinessStatus>String</BusinessStatus>
<Description>String</Description>
</SynchronizationResponse>
The sample query resulting schema
<?xml?version=″1.0″encoding=″utf-8″?>
<xs:schema?id=″Microsoft.OBA.QueryResults″
targetNamespace=″Microsoft.OBA.QueryResults″
xmlns=″Microsoft.OBA.QueryResults″
xmlns:xs=″http://www.w3.org/2001/XMLSchema″>
<xs:element?name=″QueryResults″>
<xs:complexType>
<xs:sequence>
<xs:element?name=″QueryResult″minOccurs=″0″
maxOccurs=″unbounded″>
<xs:complexType>
<xs:sequence>
<xs:element?name=″BoundData″>
<xs:complexType>
<xs:sequence>
<xs:any?minOccurs=″0″namespace=″##other″
processContents=″skip″/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute?name=″BoundItemId″type=″xs:string″/>
<xs:attribute?name=″CorrelationId″type=″xs:string″/>
<xs:attribute?name=″BoundItemType″type=″xs:string″/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute?name=″RequestId″type=″xs:string″/>
</xs:complexType>
</xs:element>
</xs:schema>
The example of Query Result
<?xml?version=″1.0″encoding=″utf-8″?>
<QueryResults?RequestId=″String″>
<QueryResult?BoundItemId=″String″CorrelationId=″String″
BoundItemType=″String″>
<BoundData/>
</QueryResult>
</QueryResults>
Appendix II
The exemplary projects mode-definition
<?xml?version=″1.0″encoding=″utf-8″?>
<xs:schema?targetNamespace=″http://tempuri.org/XML?Schema.xsd″
elementFormDefault=″qualified″xmlns=″http://tempuri.org/XMLSchema.xsd″
xmlns:mstns=″http://tempuri.org/XMLSchema.xsd″
xmlns:xs=″http://www.w3.org/2001/XMLSchema″>
<xs:element?name=″item″>
<xs:complexType>
<xs:sequence>
<xs:element?name=″properties″>
<xs:complexType>
<xs:sequence>
<xs:element?name=″property″>
<xs:complexType>
<xs:sequence>
<xs:element?name=″target″>
<xs:complexType>
<xs:sequence>
</xs:sequence>
<xs:attribute?na=″name″type=″xs:string″/>
<xs:attribute?name=″caption″type=″xs:string″/>
<xs:attribute?name=″type″type=″xs:string″/>
</xs:complexType>
</xs:element>
<xs:element?name=″mapping″>
<xs:complexType>
<xs:sequence>
</xs:sequence>
<xs:attribute?type=″xs:string″name=″xpath″/>
<xs:attribute?type=″xs:string″name=″behavior″/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element?name=″template″>
<xs:complexType>
<xs:sequence>
<xs:any/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute?type=″xs:string″name=″name″/>
</xs:complexType>
</xs:element>
</xs:schema>
Example
<?xml?version=″1.0″encoding=″utf-8″?>
<item?name=″urn:timereporting:billabletime″>
<properties>
<property>
<target?name=″BillableTime.ProjectCode″caption=″Project?Code″
type=″string″/>
<mapping?xpath=″/billableTime/@projectCode″
behavior=″promote″/>
</property>
<property>
<target?name=″Start″caption=″Start?Date″type=″string″/>
<mapping?xpath=″/billableTime/projectInfo/projectStart″
behavior=″both″/>
</property>
</properties>
<template>
<billableTime?projectCode=″12345″>
<projectInfo>
<projectStart>2005-01-01</projectStart>
<description>Project?description?goes?here</description>
</projectInfo>
</billableTime>
</template>
</item>
Behavior
<?xml?version=″1.0″encoding=″utf-8″?>
<xs:schema?targetNamespace=″http://tempuri.org/XMLSchema.xsd″
elementFormDefault=″qualified″xmlns=″http://tempuri.org/XMLSchema.xsd″
xmlns:mstns=″http://tempuri.org/XMLSchema.xsd″
xmlns:xs=″http://www.w3.org/2001/XMLSchema″>
<xs:element?name=″behaviors″>
<xs:complexType>
<xs:sequence>
<xs:element?name=″behavior″>
<xs:complexType>
<xs:sequence>
<xs:element?name=″prompt″>
<xs:complexType>
<xs:sequence/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute?name=″type″type=″xs:string″/>
<xs:attribute?name=″enabled″type=″xs:boolean″/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Example
<?xml?version=″1.0″encoding=″utf-8″?>
<behaviors>
<behavior?type=″delete″enabled=″false″>
<prompt>Sorry,you?cannot?delete?this?item.</prompt>
</behavior>
<behavior?type=″moveToPst″enabled=″true″>
<prompt>Moving?this?item?to?a?PST?is?not?recommended.</prompt>
</behavior>
<behavior?type=″save″enabled=″false″>
<prompt>Sorry,you?cannot?save?this?item.</prompt>
</behavior>
<behavior?type=″copy″enabled=″true″/>
</behaviors>
Appendix III
Example IWindow definition
using?System;
using?System.Xml;
using?Microsoft.OBA.MetadataUIForms.Interfaces;
namespace?Microsoft.OBA.OutlookExt.Interfaces
{
///<summary>
///describe the Outlook window of packing, the normally behavior of detector
///</summary>
public?interface?IWindow
{
///<summary>
The Win32 handle of ///packing window
///</summary>
IntPtr?Handle{get;}
///<summary>
///obtain bottom Outlook item objects
///</summary>
object?Native{get;}
///<summary>
///pack window with this shows the binding project
///</summary>
IBoundItem?Item{get;}
///<summary>
///binding project is packed window therewith and is associated
///</summary>
IBoundItem?AssociatedItem{get;}
///<summary>
///demonstration IBF pane
///</summary>
The param name=of ///<" context "〉the IBF contextual information of the metadata of pane content select to be described
</param>
void?ShowPane(XmlNode?context);
///<summary>
///demonstration modal dialog box
///</summary>
The param name=of ///<" context "〉the IBF contextual information of the metadata of dialog box select to be described
</param>
///<returns></returns>
object?ShowDialog(XmlNode?context);
///<summary>
///as long as create new XAML renderer engine just by the window manager service call
///</summary>
The param name=of ///<" xamlPage "〉to the interface of the new XAML page of creating</param
void?RegisterPage(IXamlPage?xamlPage);
///<summary>
///obtain is according to the toolbars/menus button of its title appointment in metadata
///for to obtain correct control guarantees that all solution controls have unique and non-empty name
///rreturn value is forced to convert Microsoft.Office.Core.CommandBarControl to used it
If ///can not find control then return sky
///</summary>
The param name=of ///<" name "〉the solution control title</param
object?GetControl(string?name);
}
}
Example IWindowCodeBehind definition
using?System;
using?Microsoft.OBA.MetadataUIForms.Interfaces;
namespace?Microsoft.OBA.OutlookExt.Interfaces
{
public?interface?IWindowCodeBehind
{
///<summary>
///when opening detector window and covered code procedure set, call this in the association of metadata middle finger phasing
Method
///</summary>
The param name=of ///<" window "〉initialization IWindow</param 〉
void?OnInit(IWindow?window,IServiceProvider?serviceProvider);
///<summary>
This method of ///when selecting a self-defined solution control, call
///</summary>
The param name=of ///<" name "〉the solution control that in SolutionControls XML, defines
Title</param 〉
The param name=of ///<" param "〉in SolutionControls XML, define parameter</param
void?OnSelectControl(string?name,string?param);
///<summary>
This method of ///when the user clicks in the detector window a different Outlook tab, call
///</summary>
The param name=of ///<" index "〉selected tab based on zero order</param
The param name=of ///<" name "〉title of the tab of appointment in the XAML page</param 〉
The param name=of ///<" caption "〉explanatory note of the tab of appointment ((is in the XAML page
Text))</param 〉
void?OnSelectTab(int?index,string?name,string?caption);
///<summary>
This method of ///when the new XAML engine wrapper of window creation for this reason, call
///</summary>
The param name=of ///<" xamlPage "〉establishment IXamlPage</param 〉
void?OnNewPage(IXamlPage?xamlPage);
}
}
Example IBoundItem definition
using?System;
using?System.Xml;
using?System.ComponentModel;
namespace?Microsoft.OBA.OutlookExt.Interfaces
{
////<summary>
The independent variable of ///be used for PropertyErrorEvent
///</summary>
public?sealed?class?PropertyErrorEventArgs:EventArgs
{
private?bool?isXpathError;
private?string?propertyName;
private?PropertyType?type;
private?string?propertyValue;
private?string?xPath;
public?PropertyErrorEventArgs(bool?isXpathError,string?propertyName,
PropertyType?type,object?propertyValue,string?xPath)
{
this.isXpathError=isXpathError;
this.propertyName=propertyName;
if(propertyValue!=null)
this.propertyValue=propertyValue.ToString();
else
this.propertyValue=string.Empty;
this.type=type;
this.xPath=xPath;
}
public?bool?IsXpathError
{
get
{
return?isXpathError;
}
}
public?string?PropertyName
{
get
{
return?propertyName;
}
}
public?string?PropertyValue
{
get
{
return?propertyValue;
}
}
public?string?XPath
{
get
{
return?xPath;
}
}
public?PropertyType?Type
{
get
{
return?type;
}
}
}
///<summary>
///packing Outlook project provides visit to map feature according to BoundItemDefinition
///</summary>
public?interface?IBoundItem:IDisposable
{
///<summary>
The ID of ///binding project is if the project of not finding then for empty
///</summary>
string?BoundItemId
{
get;
}
///<summary>
The ID of ///binding project is by LOB system definition
///may be sky only is only unique when using with BoundItemType
///</summary>
string?CorrelationId
{
get;
}
///<summary>
The type of ///packing project is equivalent to the title of BoundItemDefinition.
, ///project is sky if not binding
///</summary>
string?BoundItemType
{
get;
}
///<summary>
The definition of ///binding
///</summary>
BoundItemDefinition?BoundItemDefinition
{
get;
}
///<summary>
The synchronous regime of ///binding project
///</summary>
SynchronizationStatus?SynchronizationStatus
{
get;
}
///<summary>
The service condition of ///binding project
///</summary>
string?BusinessStatus
{
get;
}
///<summary>
The business description of ///binding project
///</summary>
string?BusinessDescription
{
get;
}
///<summary>
///packing Outlook project
///</summary>
object?OutlookItem
{
get;
}
///<summary>
The EntryId of the Outlook project of ///packing
///</summary>
string?EntryId
{
get;
}
///<summary>
The MessageClass of the Outlook project of ///packing
///</summary>
string?MessageClass
{
get;
}
///<summary>
The LastModified time stamp of the Outlook project of ///packing
///</summary>
DateTime?LastModified
{
get;
}
///<summary>
The characteristic of ///mapping is gone here and there as XML
///</summary>
string?XmlData
{
get;
set;
}
///<summary>
The characteristic of ///mapping is as the XML string of encrypting
///</summary>
string?BoundData
{
get;
}
///<summary>
///make up also returned the characteristic of mapping, as XmlDocument;
It is synchronous with the Outlook territory that ///XML is held
///</summary>
///<returns>Mapped?properties.</returns>
XmlDocument?GetXmlDocument();
///<summary>
///the return value of the characteristic of mapping according to title
///</summary>
The param name=of ///<" propName "〉the characteristic title</param 〉
The returns of ///<〉characteristic value</returns 〉
object?GetProperty(string?name);
///<summary>
///according to the value of the characteristic of name changing mapping
///</summary>
The param name=of ///<" name "〉the characteristic title</param 〉
The param name=of ///<" value "〉characteristic value</param 〉
void?SetProperty(string?name,object?value);
///<summary>
///when characteristic value changes causes
///</summary>
event?PropertyChangedEventHandler?PropertyChanged;
///<summary>
///when making a mistake to the characteristic apportioning cost time caused
///</summary>
event?EventHandler<PropertyErrorEventArgs>PropertyError;
///<summary>
///contrast confirms to comprise the XML of map feature from the XML pattern of BoundItemDefinition
///</summary>
void?Validate();
///<summary>
///confirm map feature also preserved the Outlook project
///</summary>
void?Save();
///<summary>
The value of synchronization map characteristic of ///between XML document and Outlook territory (UserProperties)
///where necessary created the Outlook territory of omitting again
///not preserved the Outlook project; The explicit Save that calls
///</summary>
void?PromoteProperties();
///<summary>
///remove all self-defined Outlook territories (UserProperties) according to BoundItemDefinition
///</summary>
void?RemoveProperties();
///<summary>
///convert the Outlook project to the binding project
///</summary>
void?BindItem(string?definition);
///<summary>
///convert the Outlook project to the binding project
///</summary>
void?BindItem(BoundItemDefinition?definition);
///<summary>
///the remove binding of Outlook project
///</summary>
void?UnbindItem();
}
}
Example IBoundItemManager definition
using?System;
using?System.Collections.Generic;
using?System.Text;
namespace?Microsoft.OBA.OutlookExt.Interfaces
{
public?interface?IBoundItemManager
{
IBoundItem?CreateBoundItem(string?boundItemType);
IBoundItem?CreateBoundItem(BoundItemDefinition?definition);
IBoundItem?GetBoundItem(object?item);
IBoundItem?GetBoundItem(string?boundItemId);
IBoundItem?GetBoundItem(string?boundItemType,string?correlationId);
IBoundItem?GetBoundItem(BoundItemDefinition?definition,string?correlationId);
}
}
Example CodeBehindDefintions
using?System;
using?System.Xml.Serialization;
namespace?Microsoft.OBA.OutlookExt.Interfaces
{
[SerializableAttribute()]
[XmlTypeAttribute(AnonymousType=true)]
[XmlRootAttribute(Namespace=
″http://schemas.microsoft.com/OBA/2005/CodeBehindDefininition″,IsNullable=false)]
public?partial?class?CodeBehindDefinition
{
private?string?assemblyNameField;
private?string?typeNameField;
[XmlAttributeAttribute()]
public?string?AssemblyName
{
get
{
return?this.assemblyNameField;
}
set
{
this.assemblyNameField=value;
}
}
[XmlAttributeAttribute()]
public?string?TypeName
{
get
{
return?this.typeNameField;
}
set
{
this.typeNameField=value;
}
}
}
}
Example BoundItemDefinition
using?System;
using?System.Collections;
using?System.Collections.Generic;
using?System.Diagnostics;
using?System.Xml;
using?System.Xml.Schema;
using?System.Xml.Serialization;
using?System.Text.RegularExpressions;
namespace?Microsoft.OBA.OutlookExt.Interfaces
{
[Serializable]
[XmlType(AnonymousType=true)]
[XmlRoot(Namespace=
″http://schemas.microsoft.com/OBA/2005/BoundItemDefinition″,IsNullable=false)]
public?sealed?class?BoundItemDefinition
{
private?OutlookItemDefinition?outlookField;
private?SynchronizationDefinition?synchronizationField;
private?MappedProperties?propertiesField;
private?EventBehaviorCollection?eventBehaviorsField;
[NonSerialized]
private?XmlElement?xmlTemplateField;
private?string?nameField;
[NonSerialized]
private?XmlNamespaceManager?namespaceManager;
// be used for the regular expression of analyzing XML name space
// form is: prefix=' name space ' [; Prefix=' name space ' [; Prefix=' name space ' [...]]]
private?const?string?nameSpaceRegExpression=″[;][^=;]+[=][′][^′]*[′]″;
public?BoundItemDefinition()
{
outlookField=new?OutlookItemDefinition();
synchronizationField=new?SynchronizationDefinition();
propertiesField=new?MappedProperties();
eventBehaviorsField=new?EventBehaviorCollection();
namespaceManager=null;
}
public?OutlookItemDefinition?Outlook
{
get
{
return?this.outlookField;
}
set
{
this.outlookField=value;
}
}
public?SynchronizationDefinition?Synchronization
{
get
{
return?this.synchronizationField;
}
set
{
this.synchronizationField=value;
}
}
[XmlArray]
[XmlArrayItem(″EventBehavior″,IsNullable=false)]
public?EventBehaviorCollection?EventBehaviors
{
get
{
return?this.eventBehaviorsField;
}
}
[XmlArray]
[XmlArrayItem(″Property″,IsNullable=false)]
public?MappedProperties?Properties
{
get
{
return?this.propertiesField;
}
}
[XmlIgnore]
public?XmlNamespaceManager?XmlNamespaceManager
{
get
{
return?namespaceManager;
}
}
[XmlIgnore]
public?XmlSchemaSet?XmlSchemaSet
{
get
{
return?new?XmlSchemaSet();
}
}
public?XmlElement?XmlTemplate
{
get
{
return?this.xmlTemplateField;
}
set
{
Exception?exception=null;
try
{
XmlDocument?xmldoc=new?XmlDocument();
string?uri=String.Empty;
string?prefix=String.Empty;
if(value?!=null)
{
xmldoc.AppendChild(xmldoc.ImportNode(value,true));
namespaceManager=new
XmlNamespaceManager(xmldoc.NameTable);
uri=xmldoc.DocumentElement.NamespaceURI;
prefix=
xmldoc.DocumentElement.GetPrefixOfNamespace(uri);
namespaceManager.AddNamespace(prefix,uri);
this.xmlTemplateField=xmldoc.DocumentElement;
// name space from the Xml element is added on the characteristic
foreach(MappedProperty?mappedProperty?in?Properties)
{
string?namespaces=mappedProperty.Xml.Namespaces;
ParseXmlNamespaces(namespaces,namespaceManager);
}
}
}
// catch specific exceptions but not generally unusual
catch(ArgumentException?ex)
{
// catch ArgumentNullException and
ArgumentOutOfRangeException
exception=ex;
}
catch(InvalidOperationException?ex)
{
exception=ex;
}
catch(NullReferenceException?ex)
{
exception=ex;
}
if(exception!=null)
{
Debug.Assert(false,exception.ToString());
this.xmlTemplateField=null;
namespaceManager=null;
}
}
}
[XmlAttribute]
public?string?Name
{
get
{
return?this.nameField;
}
set
{
this.nameField=value;
}
}
public?static?void?ParseXmlNamespaces(string?namespaces,
XmlNamespaceManager?namespaceManager)
{
Debug.Assert(namespaceManager!=null);
if(!string.IsNullOrEmpty(namespaces))
{
// create new Regex object and define regular expression
string?regexInput=″;″+namespaces;
Regex?regex=new?Regex(nameSpaceRegExpression);
// find the whole couplings in the input string
MatchCollection?matchCollection=regex.Matches(regexInput);
Debug.Assert(matchCollection.Count>0);
// cycle through the coupling set to retrieve all couplings
for(int?i=0;i<matchCollection.Count;i++)
{
string?prefixAndUriStr=matchCollection[i].Value.Substring(1);
string[]prefixAndUri=prefixAndUriStr.Split(′=′);
string?prefix=prefixAndUri[0];
string?uri=prefixAndUriStr.Substring(prefix.Length+1);
uri=uri.Trim(′\″);
if(namespaceManager!=null)
namespaceManager.AddNamespace(prefix,uri);
}
}
}
}
[Serializable]
[XmlType(AnonymousType=true)]
public?class?MappedProperties:IEnumerable<MappedProperty>
{
private?SortedList<string,MappedProperty>properties;
private?SortedList<string,MappedProperty>propertiesByOutlookName;
public?MappedProperties()
{
properties=new?SortedList<string,MappedProperty>();
propertiesByOutlookName=new?SortedList<string,MappedProperty>();
}
public?MappedProperty?this[int?index]
{
get
{
// serialization is essential to XML
return?properties.Values[index];
}
}
public?MappedProperty?this[string?name]
{
get
{
return?properties[name];
}
}
public?void?Add(MappedProperty?property)
{
if(propertiesByOutlookName.ContainsKey(property.Outlook.Name))
throw?new?ArgumentException(″property″,property.Outlook.Name);
properties.Add(property.Name,property);
The mapping that // structure Outlook title arrives characteristic herein
propertiesByOutlookName.Add(property.Outlook.Name,property);
}
public?MappedProperty?GetByOutlookName(string?name)
{
return?propertiesByOutlookName[name];
}
public?bool?TryToGetByOutlookName(string?name,out?MappedProperty?copy)
{
return?propertiesByOutlookName.TryGetValue(name,out?copy);
}
public?bool?ContainsKey(string?name)
{
return?properties.ContainsKey(name);
}
public?bool?ContainsOutlookName(string?name)
{
return?propertiesByOutlookName.ContainsKey(name);
}
#region?IEnumerable<MappedProperty>Members
public?IEnumerator<MappedProperty>GetEnumerator()
{
return?properties.Values.GetEnumerator();
}
#endregion
#region?IEnumerable?Members
IEnumerator?IEnumerable.GetEnumerator()
{
return?properties.Values.GetEnumerator();
}
#endregion
}
[Serializable]
[XmlType(AnonymousType=true)]
public?class?EventBehaviorCollection:IEnumerable<EventBehavior>
{
private?SortedList<EventBehaviorType,EventBehavior>eventbehaviors;
public?EventBehaviorCollection()
{
eventbehaviors=new?SortedList<EventBehaviorType,EventBehavior>();
}
public?EventBehavior?this[int?index]
{
get
{
// serialization is essential to XML
return?eventbehaviors.Values[index];
}
}
public?EventBehavior?this[EventBehaviorType?type]
{
get
{
try
{
return?eventbehaviors[type];
}
catch(System.Collections.Generic.KeyNotFoundException)
{
return?null;
}
}
}
public?void?Add(EventBehavior?eventBehavior)
{
eventbehaviors.Add(eventBehavior.Type,eventBehavior);
}
#region?IEnumerable<MappedProperty>Members
public?IEnumerator<EventBehavior>GetEnumerator()
{
return?eventbehaviors.Values.GetEnumerator();
}
#endregion
#region?IEnumerable?Members
IEnumerator?IEnumerable.GetEnumerator()
{
return?eventbehaviors.Values.GetEnumerator();
}
#endregion
}
[Serializable]
[XmlType(AnonymousType=true)]
public?sealed?class?OutlookItemDefinition
{
private?string?defaultFolderField;
private?string?messageClassField;
[XmlAttribute]
public?string?DefaultFolder
{
get
{
return?this.defaultFolderField;
}
set
{
this.defaultFolderField=value;
}
}
[XmlAttribute]
public?string?MessageClass
{
get
{
return?this.messageClassField;
}
set
{
this.messageClassField=value;
}
}
}
[Serializable]
[XmlType(AnonymousType=true)]
public?sealed?class?SynchronizationDefinition
{
private?SynchronizationBehavior?synchronizationBehaviorField;
private?string?pastOnlyField;
public?SynchronizationBehavior?Behavior
{
get
{
return?this.synchronizationBehaviorField;
}
set
{
this.synchronizationBehaviorField=value;
}
}
public?string?PastOnly
{
get
{
return?this.pastOnlyField;
}
set
{
this.pastOnlyField=value;
}
}
}
[Serializable]
[XmlType(AnonymousType=true)]
public?enum?SynchronizationBehavior
{
Always,
PastOnly,
Never,
}
[Serializable]
[XmlType(AnonymousType=true)]
public?sealed?class?EventBehavior
{
private?EventBehaviorType?type;
private?bool?enabled;
private?string?prompt;
public?string?Prompt
{
get{return?prompt;}
set{prompt=value;}
}
[XmlAttribute]
public?EventBehaviorType?Type
{
get{return?type;}
set{type=value;}
}
[XmlAttribute]
public?bool?Enabled
{
get{return?enabled;}
set{enabled=value;}
}
}
[Serializable]
[XmlType(AnonymousType=true)]
public?sealed?class?MappedProperty
{
private?MappingBehavior?mappingBehaviorField;
private?OutlookProperty?outlookPropertyField;
private?MappingDefinition?mappingDefinitionField;
private?string?nameField;
private?PropertyType?typeField;
///<summary>
The XML if characteristic value is read in ///should use Outlook territory then return true
///</summary>
[XmlIgnore]
public?bool?IsOutlookProperty
{
get
{
Debug.Assert(Outlook!=null);
Debug.Assert(Xml?!=null);
switch(Behavior)
{
case?MappingBehavior.OutlookOnly:
Debug.Assert(!String.IsNullOrEmpty(Outlook.Name));
Debug.Assert(Xml.XPath==null);
return?true;
case?MappingBehavior.OutlookToXml:
case?MappingBehavior.ReadOnlyOutlookToXml:
Debug.Assert(!String.IsNullOrEmpty(Outlook.Name));
Debug.Assert(Xml.XPath!=null);
return?true;
case?MappingBehavior.ReadOnlyXmlToOutlook:
case?MappingBehavior.XmlToOutlook:
Debug.Assert(!String.IsNullOrEmpty(Outlook.Name));
Debug.Assert(Xml.XPath!=null);
return?false;
case?MappingBehavior.XmlOnly:
Debug.Assert(String.IsNullOrEmpty(Outlook.Name));
Debug.Assert(Xml.XPath!=null);
return?false;
default:
Debug.Assert(false);
return?false;
}
}
}
public?MappingBehavior?Behavior
{
get
{
return?this.mappingBehaviorField;
}
set
{
this.mappingBehaviorField=value;
}
}
[XmlAttribute]
public?string?Name
{
get
{
return?this.nameField;
}
set
{
this.nameField=value;
}
}
[XmlAttribute]
public?PropertyType?Type
{
get
{
return?this.typeField;
}
set
{
this.typeField=value;
}
}
public?OutlookProperty?Outlook
{
get
{
return?this.outlookPropertyField;
}
set
{
this.outlookPropertyField=value;
}
}
public?MappingDefinition?Xml
{
get
{
return?this.mappingDefinitionField;
}
set
{
this.mappingDefinitionField=value;
}
}
}
[Serializable]
[XmlType(AnonymousType=true)]
public?sealed?class?OutlookProperty
{
private?string?outlookPropertyNameField;
[XmlAttribute]
public?string?Name
{
get
{
return?this.outlookPropertyNameField;
}
set
{
this.outlookPropertyNameField=value;
}
}
}
[Serializable]
[XmlType(AnonymousType=true)]
public?sealed?class?MappingDefinition
{
private?string?xPathField;
private?string?namespacesField;
[XmlAttribute]
public?string?XPath
{
get
{
return?this.xPathField;
}
set
{
this.xPathField=value;
}
}
[XmlAttribute]
public?string?Namespaces
{
get
{
return?this.namespacesField;
}
set
{
this.namespacesField=value;
}
}
}
[Serializable]
[XmlType(AnonymousType=true)]
public?enum?MappingBehavior
{
XmlOnly,
XmlToOutlook,
ReadOnlyXmlToOutlook,
OutlookOnly,
OutlookToXml,
ReadOnlyOutlookToXml,
}
[Serializable]
[XmlType(AnonymousType=true)]
public?enum?EventBehaviorType
{
Delete,
MoveToPst,
Save,
Copy,
}
[Serializable]
[XmlType(AnonymousType=true)]
public?enum?PropertyType
{
Integer=1,
DateTime=2,
Decimal=3,
Boolean=4,
String=5,
DistributionListMembers=0,
}
}
Appendix IV
Be used to define the example meta data pattern of UI list
<?xml?version=″1.0″encoding=″utf-8″?>
<xs:schema?targetNamespace=″urn-Mendocino/jaml″
elementFormDefault=″qualified″
xmlns:jaml=″urn-Mendocino/jaml″
xmlns:xs=″http://www.w3.org/2001/XMLSchema″>
<xs:complexType?name=″ControlType″>
<xs:attributeGroup?ref=″jaml:ControlTypeAttributes″/>
</xs:complexType>
<xs:complexType?name=″ParentControlType″>
<xs:complexContent>
<xs:extension?base=″jaml:ControlType″>
<xs:sequence>
<xs:element?ref=″jaml:Control″minOccurs=″0″
maxOccurs=″unbounded″/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType?name=″PageType″>
<xs:complexContent>
<xs:extension?base=″jaml:ParentControlType″>
<xs:sequence>
<xs:element?ref=″jaml:DataSource″minOccurs=″0″
maxOccurs=″unbounded″/>
</xs:sequence>
<!--incident--〉
<xs:attribute?name=″Load″type=″xs:string″use=″optional″/>
<!--covered code procedure set--〉
<xs:attribute?name=″Assembly″type=″xs:string″use=″optional″/>
<xs:attribute?name=″TypeName″type=″xs:string″use=″optional″
/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType?name=″DataSourceType″>
<xs:attribute?name=″Name″type=″xs:string″use=″required″/>
<!--data source procedure set--〉
<xs:attribute?name=″Assembly″type=″xs:string″use=″optional″/>
<xs:attribute?name=″TypeName″type=″xs:string″use=″optional″/>
</xs:complexType>
<xs:complexType?name=″PanelType″>
<xs:complexContent>
<xs:extension?base=″jaml:ParentControlType″>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType?name=″LabelType″>
<xs:complexContent>
<xs:extension?base=″jaml:ControlType″>
<xs:attribute?name=″TextAlignment″type=″xs:string″
use=″optional″/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType?name=″TextBoxType″>
<xs:complexContent>
<xs:extension?base=″jaml:ControlType″>
<xs:attribute?name=″TextAlignment″type=″xs:string″
use=″optional″/>
<xs:attribute?name=″MaxLength″type=″xs:string″use=″optional″
/>
<xs:attribute?name=″MinLines″type=″xs:string″use=″optional″/>
<xs:attribute?name=″Wrap″type=″xs:string″use=″optional″/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType?name=″ButtonType″>
<xs:complexContent>
<xs:extension?base=″jaml:ControlType″>
<xs:attribute?name=″TextAlignment″type=″xs:string″
use=″optional″/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType?name=″LinkLabelType″>
<xs:complexContent>
<xs:extension?base=″jaml:ControlType″>
<xs:attribute?name=″TextAlignment″type=″xs:string″
use=″optional″/>
<xs:attribute?name=″LinkBehavior″type=″xs:string″
use=″optional″/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType?name=″ImageType″>
<xs:complexContent>
<xs:extension?base=″jaml:ControlType″>
<xs:attribute?name=″Source″type=″xs:string″use=″required″/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType?name=″CheckBoxType″>
<xs:complexContent>
<xs:extension?base=″jaml:ControlType″>
<xs:attribute?name=″TextAlignment″type=″xs:string″
use=″optional″/>
<xs:attribute?name=″IsChecked″type=″xs:string″use=″optional″/>
<!--incident--〉
<xs:attribute?name=″IsCheckedChanged″type=″xs:string″
use=″optional″/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!--list control type--〉
<xs:complexType?name=″ListControlType″>
<xs:complexContent>
<xs:extension?base=″jaml:ControlType″>
<xs:attribute?name=″DisplayMemberPath″type=″xs:string″
use=″optional″/>
<xs:attribute?name=″SelectedValuePath″type=″xs:string″
use=″optional″/>
<xs:attribute?name=″SelectedValue″type=″xs:string″
use=″optional″/>
<xs:attribute?name=″ItemsSource″type=″xs:string″use=″optional″
/>
<xs:attribute?name=″SelectedIndex″type=″xs:string″
use=″optional″/>
<!--incident--〉
<xs:attribute?name=″SelectionChanged″type=″xs:string″
use=″optional″/>
<!--
<xs:sequence>
<xs:element?ref=″jaml:ListControlItem″minOccurs=″0″
maxOccurs=″unbounded″/>
</xs:sequence>
-->
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!--<xs:element?name=″ListControl″type=″jaml:ListControlType″
abstract=″true″/>-->
<xs:simpleType?name=″ListControlItemType″>
<xs:restriction?base=″xs:string″>
</xs:restriction>
</xs:simpleType>
<xs:element?name=″ListControlItem″type=″jaml:ListControlItemType″
abstract=″true″/>
<xs:element?name=″ListBoxItem?″type=″jaml:ListControlItemType″
substitutionGroup=″jaml:ListControlItem″/>
<xs:element?name=″ComboBoxItem″type=″jaml:ListControlItemType″
substitutionGroup=″jaml:ListControlItem″/>
<xs:element?name=″RadioButton″type=″jaml:ListControlItemType″
substitutionGroup=″jaml:ListControlItem″/>
<xs:complexType?name=″ListBoxType″>
<xs:complexContent>
<xs:extension?base=″jaml:ListControlType″>
<xs:sequence>
<xs:element?ref=″jaml:ListBoxItem″minOccurs=″0″
maxOccurs=″unbounded″/>
</xs:sequence>
<xs:attribute?name=″SelectionMode″type=″xs:string″
use=″optional″/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType?name=″ComboBoxType″>
<xs:complexContent>
<xs:extension?base=″jaml:ListControlType″>
<xs:sequence>
<xs:element?ref=″jaml:ComboBoxItem″minOccurs=″0″
maxOccurs=″unbounded″/>
</xs:sequence>
<xs:attribute?name=″DropDownStyle″type=″xs:string″
use=″optional″/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType?name=″RadioButtonListType″>
<xs:complexContent>
<xs:extension?base=″jaml:ListControlType″>
<xs:sequence>
<xs:element?ref=″jaml:RadioButton″minOccurs=″0″
maxOccurs=″unbounded″/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!--UI element--〉
<xs:element?name=″Control″type=″jaml:ControlType″abstract=″true″/>
<xs:element?name=″Page″type=″jaml:PageType″
substitutionGroup=″jaml:Control″/>
<xs:element?name=″DataSource″type=″jaml:DataSourceType″/>
<xs:element?name=″Panel″type=″jaml:PanelType″
substitutionGroup=″jaml:Control″/>
<xs:element?name=″ListBox″type=″jaml:ListBoxType″
substitutionGroup=″jaml:Control″/>
<xs:element?name=″ComboBox″type=″jaml:ComboBoxType″
substitutionGroup=″jaml:Control″/>
<xs:element?name=″RadioButtonList″type=″jaml:RadioButtonListType″
substitutionGroup=″jaml:Control″/>
<xs:element?name=″Label″type=″jaml:LabelType″
substitutionGroup=″jaml:Control″/>
<xs:element?name=″TextBox″type=″jaml:TextBoxType″
substitutionGroup=″jaml:Control″/>
<xs:element?name=″Button″type=″jaml:ButtonType″
substitutionGroup=″jaml:Control″/>
<xs:element?name=″CheckBox″type=″jaml:CheckBoxType″
substitutionGroup=″jaml:Control″/>
<xs:element?name=″Image″type=″jaml:ImageType″
substitutionGroup=″jaml:Control″/>
<xs:element?name=″LinkLabel″type=″jaml:LinkLabelType″
substitutionGroup=″jaml:Control″/>
<!--control property--〉
<!--because all properties value all can be actually binding expression,
Therefore the type to each attribute is xs:string--〉
<xs:attributeGroup?name=″ControlTypeAttributes″>
<!--characteristic--〉
<!-Top and Left can become essential attribute,
But being optional also is fine--〉
<xs:attribute?name=″Top″type=″xs:string″default=″0″use=″optional″/>
<xs:attribute?name=″Left″type=″xs:string″default=″0″use=″optional″/>
<xs:attribute?name=″Width″type=″xs:string″use=″optional″/>
<xs:attribute?name=″Height″type=″xs:string″use=″optional″/>
<xs:attribute?name=″Anchor″type=″xs:string″use=″optional″/>
<!--can have the enumerating of Anchor value of appointment herein
But because this also can be a binding expression
Therefore must keep it is simple string--〉
<xs:attribute?name=″Background″type=″xs:string″use=″optional″/>
<xs:attribute?name=″Foreground″type=″xs:string″use=″optional″/>
<xs:attribute?name=″FontFamily″type=″xs:string″use=″optional″/>
<xs:attribute?name=″FontSize″type=″xs:string″use=″optional″/>
<xs:attribute?name=″FontStyle″type=″xs:string″use=″optional″/>
<xs:attribute?name=″Name″type=″xs:string″use=″required″/>
<xs:attribute?name=″Tag″type=″xs:string″use=″optional″/>
<xs:attribute?name=″TabIndex″type=″xs:string″use=″optional″/>
<xs:attribute?name=″IsEnabled″type=″xs:string″use=″optional″/>
<xs:attribute?name=″Visibility″type=″xs:string″use=″optional″/>
<xs:attribute?name=″ToolTip″type=″xs:string″use=″optional″/>
<xs:attribute?name=″Text″type=″xs:string″use=″optional″/>
<!--incident--〉
<xs:attribute?name=″Click″type=″xs:string″use=″optional″/>
<xs:attribute?name=″GotFocus″type=″xs:string″use=″optional″/>
<xs:attribute?name=″LostFocus″type=″xs:string″use=″optional″/>
<xs:attribute?name=″KeyUp″type=″xs:string″use=″optional″/>
<xs:attribute?name=″KeyDown″type=″xs:string″use=″optional″/>
<xs:attribute?name=″MouseUp″type=″xs:string″use=″optional″/>
<xs:attribute?name=″MouseDown″type=″xs:string″use=″optional″/>
<xs:attribute?name=″TextChanged″type=″xs:string″use=″optional″/>
</xs:attributeGroup>
</xs:schema>

Claims (20)

1. method that is used for the productivity suite application interface, described method comprises:
Control in the identifying user interface (1703), wherein said user interface define in metadata (1401,1701);
The control that instantiation (1705) is identified;
The characteristic (1706,1707) that is associated with the control that is identified is set;
Subscribe at least one the control incident (1708) that is associated with the control that is identified, wherein said at least one control incident is by (1401 of the metadata appointment of the described user interface of definition, 1701), wherein metadata comprises meta data definition, described meta data definition associates the characteristic of the control that identified and the binding data in the synchrodata storage, described synchrodata storage is associated with described productivity suite project and line-of-business application, the difference of the synchrodata between described synchrodata store storage line-of-business application entity and the described productivity suite project, and described synchrodata is represented by extend markup language (XML), wherein the change to the characteristic of the control that identified propagates in the described synchrodata storage, so that the change of described characteristic can be submitted to line-of-business application with the tabular form that changes request subsequently to upgrade, described change request is generated by described synchrodata storage;
Generate the object (1711) that is associated with described control; And
The object (1712) that is generated with described productivity suite application master place.
2. the method for claim 1 is characterized in that, also comprises: detect the trigger (1805) that is associated with described control incident; And
To propagate into the territory that is associated with described control from the change of productivity suite project in response to detected trigger.
3. method as claimed in claim 2 is characterized in that, the trigger that is associated with described control incident is to be detected by a button.onrelease that is associated with the step (1708) of at least one control incident of described subscription.
4. method as claimed in claim 3 is characterized in that, described button.onrelease is by the code definition of appointment in described metadata (1401,1701).
5. the method for claim 1 is characterized in that, also comprises:
Detect the trigger (1805) that is associated with described control incident; And
Propagate into the project of described productivity suite in response to the change of the characteristic of the user interface of free described productivity applications external member master place in the future of detected trigger.
6. method as claimed in claim 5 is characterized in that, the trigger (1805) that is associated with described control incident is to be detected by a button.onrelease that is associated with the step (1708) of described subscription control incident.
7. method as claimed in claim 6 is characterized in that, described button.onrelease is the code definition by appointment in the metadata (1401,1701) of the described user interface of definition.
8. the method for claim 1 is characterized in that, the object that is generated of described main place is hosted within least one of window, task pane and productivity suite list.
9. the method for claim 1 is characterized in that, also comprises: with the binding of the characteristic of a data source and described control, wherein said data source is appointment in the metadata (1401,1701) of the described user interface of definition.
10. method as claimed in claim 9 is characterized in that, described data source is corresponding to the synchrodata storage (740,840,940,1050,1270) that is associated with described productivity suite application.
11. method as claimed in claim 9 is characterized in that, also comprises: the data source list that is maintained in the middle appointment of metadata (1401,1701) of the described user interface of definition.
12. method as claimed in claim 11, it is characterized in that, also comprise: safeguard a binding characteristic tabulation that is associated with described user interface, wherein at least one binding characteristic is to described control appointment in the metadata (1401,1701) that defines described user interface.
13. the method for claim 1 is characterized in that, also comprises: at least one field/value that at least one conversion during preference of selecting based on the user and place are provided with is used for described user interface is right.
14. an equipment that is used for the productivity suite application interface, described equipment comprises:
The device that is used for the control (1703) at identifying user interface, wherein said user interface define in metadata (1401,1701);
The device that is used for the control that instantiation (1705) identified;
Be used to be provided with the device of the characteristic (1706,1707) that is associated with the control that is identified;
Be used to subscribe to the device of at least one the control incident (1708) that is associated with the control that is identified, wherein said at least one control incident is by (1401 of the metadata appointment of the described user interface of definition, 1701), wherein metadata comprises meta data definition, described meta data definition associates the characteristic of the control that identified and the binding data in the synchrodata storage, described synchrodata storage is associated with described productivity suite project and line-of-business application, the difference of the synchrodata between described synchrodata store storage line-of-business application entity and the described productivity suite project, and described synchrodata is represented by extend markup language (XML), wherein the change to the characteristic of the control that identified propagates in the described synchrodata storage, so that the change of described characteristic can be submitted to line-of-business application with the tabular form that changes request subsequently to upgrade, described change request is generated by described synchrodata storage;
Be used to generate the device of the object (1711) that is associated with described control; And
The device that is used for the object (1712) that generated with described productivity suite application master place.
15. equipment as claimed in claim 14 is characterized in that, described equipment also comprises:
The characteristic (1801) that is used for being associated with a control is tied to the device of a data source, and wherein said data source is by at least one following appointment: DSN (1802), data source path (1803), link, data source schema (1804), data source trigger event (1805).
16. one kind is used for and the method that has by the productivity suite application interface of the user interface of the main place of metadata (1401,1701) appointment, described method comprises:
Obtain an object, wherein said object is associated with the productivity suite project that a usefulness XML data representation is packed, and described XML data representation is included in the metadata;
Retrieve described XML data representation;
Determine whether described XML data representation is bound to described productivity suite project, wherein binding project comprises meta data definition, described meta data definition associates the characteristic and the binding data of control in the synchrodata storage, described synchrodata storage is associated with a data storage and described productivity suite project, the difference of described synchrodata store storage synchrodata, wherein the synchrodata of being stored has been created a tabulation that changes request, and described change request is submitted to line-of-business application to upgrade;
When detecting change and described XML data representation is when being used for binding project (1801), to upgrade described productivity suite project; And
The user interface that will propagate into described main place to the change of described productivity suite project is to reflect described change.
17. method as claimed in claim 16 is characterized in that, the user interface of described main place is bound to described productivity suite application by the data source of an appointment in described metadata (1401,1701).
18. method as claimed in claim 17, it is characterized in that, also comprise: by detecting the change in the productivity suite project, and signal a button.onrelease (1805) during the change in detecting described productivity suite project, change in the described productivity suite project is propagated into the characteristic of the control in the user interface of described main place, wherein said button.onrelease (1805) is by metadata (1401, the 1701) definition of the user interface of specifying described main place.
19. method as claimed in claim 17, it is characterized in that, also comprise: by the characteristic of the control in the user interface that detects described main place, and call a button.onrelease (1805) during the change in detecting the characteristic of described control, propagate the change in the characteristic of the control in the user interface of described main place, wherein said button.onrelease (1805) is that the metadata (1401,1701) by the user interface of specifying described main place defines.
20. method as claimed in claim 17, it is characterized in that, also comprise: when from the user interface of described productivity suite application and described main place at least one initiated the change of productivity suite project, upgrade synchrodata storage (740,840,940,1050,1270).
CN2006800427227A 2005-09-16 2006-09-18 Interfaces for a productivity suite application and a hosted user interface Expired - Fee Related CN101310271B (en)

Applications Claiming Priority (9)

Application Number Priority Date Filing Date Title
US71769405P 2005-09-16 2005-09-16
US60/717,694 2005-09-16
US75297105P 2005-12-21 2005-12-21
US75333705P 2005-12-21 2005-12-21
US60/753,337 2005-12-21
US60/752,971 2005-12-21
US11/479,372 US7945531B2 (en) 2005-09-16 2006-06-29 Interfaces for a productivity suite application and a hosted user interface
US11/479,372 2006-06-29
PCT/US2006/036483 WO2007035733A2 (en) 2005-09-16 2006-09-18 Interfaces for a productivity suite application and a hosted user interface

Publications (2)

Publication Number Publication Date
CN101310271A CN101310271A (en) 2008-11-19
CN101310271B true CN101310271B (en) 2011-04-13

Family

ID=40125810

Family Applications (2)

Application Number Title Priority Date Filing Date
CN2006800427227A Expired - Fee Related CN101310271B (en) 2005-09-16 2006-09-18 Interfaces for a productivity suite application and a hosted user interface
CN200680042732.0A Expired - Fee Related CN101310265B (en) 2005-09-16 2006-09-18 Synchronization mechanism of productivity suite to line of business

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN200680042732.0A Expired - Fee Related CN101310265B (en) 2005-09-16 2006-09-18 Synchronization mechanism of productivity suite to line of business

Country Status (1)

Country Link
CN (2) CN101310271B (en)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8434097B2 (en) * 2009-12-30 2013-04-30 Sybase, Inc. Dynamic data binding for MBOs for container based application
CN102455892B (en) 2010-10-18 2014-04-16 腾讯科技(深圳)有限公司 Method and device for realizing miniblog message pages
TWI435262B (en) * 2011-04-22 2014-04-21 Wistron Corp Rendering and operating method of an user interface, program product and system
CN102420857A (en) * 2011-11-18 2012-04-18 北京蓝汛通信技术有限责任公司 Operation instruction transmission and processing methods, transmission and cache servers and storage system
US8499122B2 (en) * 2011-11-21 2013-07-30 Microsoft Corporation Asynchronous data binding
CN103257967A (en) * 2012-02-17 2013-08-21 腾讯科技(深圳)有限公司 Method and device for shielding influence of custom style on global style in webpage
US20140081938A1 (en) * 2012-09-14 2014-03-20 Microsoft Corporation Bidirectional synchronization of communications and crm applications
EP2977895A1 (en) * 2014-07-23 2016-01-27 Siemens Aktiengesellschaft Managing data in a manufacturing execution system
CN106155674B (en) * 2015-04-22 2020-04-07 阿里巴巴集团控股有限公司 Method and device for displaying report page
CN105824625B (en) * 2016-03-14 2019-07-23 北京中电普华信息技术有限公司 A kind of service application constructing apparatus and method based on cloud environment
CN106371845B (en) * 2016-09-05 2019-10-25 深圳震有科技股份有限公司 The method and system of same type control are reused based on WPF by control pond
CN107273113A (en) * 2017-05-05 2017-10-20 广东网金控股股份有限公司 The binding of page control and entity, to entity assignment and the method for page control assignment
CN110688187A (en) * 2019-09-27 2020-01-14 福建工程学院 Data interaction method for control and function in application program customized function interface
CN113064580A (en) * 2021-03-29 2021-07-02 上海金融期货信息技术有限公司 Client system of horizontal extension
CN113176901B (en) * 2021-05-17 2023-09-19 上海云扩信息科技有限公司 Program running loading optimization method

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6424966B1 (en) * 1998-06-30 2002-07-23 Microsoft Corporation Synchronizing crawler with notification source
CN1647071A (en) * 2001-10-24 2005-07-27 Bea系统公司 Data synchronization

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6424966B1 (en) * 1998-06-30 2002-07-23 Microsoft Corporation Synchronizing crawler with notification source
CN1647071A (en) * 2001-10-24 2005-07-27 Bea系统公司 Data synchronization

Also Published As

Publication number Publication date
CN101310271A (en) 2008-11-19
CN101310265A (en) 2008-11-19
CN101310265B (en) 2013-03-13

Similar Documents

Publication Publication Date Title
CN101310271B (en) Interfaces for a productivity suite application and a hosted user interface
CA2624270C (en) Interfaces for a productivity suite application and a hosted user interface
JP5042993B2 (en) How to configure a software application
US7774752B2 (en) Runtime services for network software platform
US7363628B2 (en) Data centric and protocol agnostic workflows for exchanging data between a workflow instance and a workflow host
JP5021193B2 (en) Declarative representation of an extensible workflow model
US8799857B2 (en) XML application framework
US6353926B1 (en) Software update notification
CN101512503B (en) Xml application framework
US20080126932A1 (en) GUI modeling of knowledge base in a modeling environment
JP2005135385A (en) Programming interface for computer platform
JP2004280820A (en) Framework for supporting business software application
EP2159745A1 (en) Plug-ins for editing templates in a business management system
WO2011118003A1 (en) Web application building system, web application building method, web application building program, and recording medium on which web application building is recorded
US10964416B1 (en) Block chain management
US20070283034A1 (en) Method to support data streaming in service data objects graphs
US20110246872A1 (en) Replacement of data element in a graph
Singh et al. Pro Sync Framework
Collins WorkflowServiceHost
MX2008004932A (en) Interfaces for a productivity suite application and a hosted user interface

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
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150421

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20150421

Address after: Washington State

Patentee after: Micro soft technique license Co., Ltd

Address before: Washington State

Patentee before: Microsoft Corp.

CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20110413

Termination date: 20190918