Software for managing data between a client and server
Claim Score by NHIP
Abstract
Various techniques and components are provided for managing data between a client and server. In one example embodiment, software is operable to receive an updated business object property at a server, process the updated property with a business object residing on the server, and communicate an updated business object from the server to the client. In certain implementations, this allows for the server to update a complete business object, including properties requiring recalculation based on the updated business object property, through a targeted communication from the client, namely, the single updated business object property. Additionally, the software may provide for the identification and automatic updated of server-side business objects or business object properties related to the received updated business object property.

Term
3.7 yearsto projected expiry
Projected expiry 23 May 2030, counted from filing; an application has no term until it is granted.
- Priority and filed
- Published
- Today
- Projected expiry
27 claims: 5 independent, 22 dependent
- 1Software for managing data between a client and server, the software comprising computer readable instructions operable when executed to:receive an updated remote business object property from a client;process the updated remote business object property into a hosted business object using hosted business rules, wherein the hosted business object comprises: a first hosted business object property corresponding with the updated remote business object property;and a second hosted business object property related to the updated remote business object property;and communicate an updated hosted business object to the client.
- 10A system for managing data between a client and server, comprising:means for receiving an updated remote business object property from a client;means for processing the updated remote business object property into the hosted business object using hosted business rules, wherein the hosted business object comprises: a first hosted business object property corresponding with the updated remote business object property;and a second hosted business object property related to the updated remote business object property;and means for communicating an updated hosted business object to the client.
- 14Development software comprising computer readable instructions operable when executed to:identify a hosted business object that will have a corresponding remote business object at a remote client;and set at least one of a plurality of properties in the hosted business object that are associated with hosted business rules such that the updated property of the remote business object can be processed by the hosted business rules to generate an updated hosted business object.
- 20Broadest claimClaim Score 76, broad(NHIP)A computer implemented method for developing software comprising the steps of:identifying a hosted business object that will have a corresponding remote business object at a client in a hosted environment;and setting at least one of a plurality of properties in the hosted business object that are associated with hosted business rules such that the updated property of the remote business object can be processed by the hosted business rules to generate an updated hosted business object.
- 26Software for managing data between a client and server, the software comprising computer readable instructions operable when executed to:receive an updated remote business object property from a server;process the updated remote business object property into a local business object using local business rules, wherein the local business object comprises: a first local business object property corresponding with the updated remote business object property;and a second local business object property related to the updated remote business object property;and communicate an updated local business object to the server.
Independent claims5
81 paragraphs in 5 sections, as filed
TECHNICAL FIELD
0001This disclosure relates to software and, more particularly, to software for managing data between a client and server.
BACKGROUND
0002Currently, small and large businesses alike complete various transactions through web-based software applications. These transactions consist of the transmission of data between the client (or user) and the server hosting the software application. In many instances, these transactions are carried out through the use of HTML forms or other web-based applications, where the user enters data into various fields or tables and submits the completed form to the server for processing of the data. The server then sends back a response to the user containing the processed form, including the user-entered data and any appropriate messages. Generally, changes made by the user are communicated along with other unchanged, perhaps even unrelated, data. Further, such communications by the client may be triggered only by the user activating a button or by some other proactive technique.
SUMMARY
0003This disclosure provides various embodiments of software for the management of data between a client and server through, for example, an object property setter. In one implementation, the object property setter is included within a visual development environment in a hosted application on a server. The object property setter identifies a business object on the server, which corresponds to a business object at a remote client. Properties in the business object located on the server are set in accordance with business rules located on the server, such that when the client updates a business object property remotely, the remote business object property is processed on the server according to the business rules.
0004In another example, an object property setter is attached to a business object property within a business object located on a remote client. When the client updates the property with the attached object property setter, the server receives the updated business object property, where it may be processed according to the business rules located on the server. The hosted instance of the business object property is updated, along with any other business object properties affected by the client's change. These changes to one or more business object properties are encompassed within the hosted business object, which is then communicated to the client.
0005In another example, the object property setter functions to validate an updated business object property, ensuring that the client enters only valid values within the property. If the client enters an invalid value for a business object property, an indication is communicated to the client so that the client may adjust the value accordingly. For example, a text message may be communicated to the client indicating that the value is in the incorrect format or out-of-range. Additionally, a visual indication may be communicated to the client, highlighting the invalid value on the client's graphical user interface through an appropriate color scheme.
0006The foregoing example software—as well as other disclosed processes—may also be computer implementable methods. Moreover, some or all of these aspects may be further included in respective systems or other devices for executing, implementing, or otherwise supporting a development environment that can process business objects. The details of these and other aspects and embodiments of the disclosure are set forth in the accompanying drawings and the description below. Other features, objects, and advantages of the various embodiments will be apparent from the description and drawings, as well as from the claims.
DESCRIPTION OF DRAWINGS
0007<figref idref="DRAWINGS">FIG. 1</figref> illustrates an example system for the transmission of data between a client and a hosted software application by an object property setter, in accordance with certain embodiments included in the present disclosure;
0008<figref idref="DRAWINGS">FIG. 2</figref> illustrates an example hosting infrastructure implementing various processes and modules in accordance with one embodiment of the system of <figref idref="DRAWINGS">FIG. 1</figref>;
0009<figref idref="DRAWINGS">FIG. 3</figref> illustrates an example application implementing certain techniques and components in accordance with one embodiment of the system of <figref idref="DRAWINGS">FIG. 1</figref>;
0010<figref idref="DRAWINGS">FIG. 4A</figref> depicts an example development environment in accordance with one embodiment of <figref idref="DRAWINGS">FIG. 1</figref>;
0011<figref idref="DRAWINGS">FIG. 4B</figref> depicts a simplified process for mapping a model representation to a runtime representation using the example development environment of <figref idref="DRAWINGS">FIG. 4A</figref> or some other development environment;
0012<figref idref="DRAWINGS">FIG. 5</figref> is an example flowchart illustrating the development of the object property setter in the development environment, in accordance with certain embodiments included in the present disclosure;
0013<figref idref="DRAWINGS">FIG. 6A</figref> depicts a model representation of a business object;
0014<figref idref="DRAWINGS">FIG. 6B</figref> depicts the GUI utilized by the developer to assign an object property setter to a property of the business object of <figref idref="DRAWINGS">FIG. 6A</figref>;
0015<figref idref="DRAWINGS">FIG. 6C</figref> depicts a model representation of the business object including two object property setters assigned to corresponding business object properties;
0016<figref idref="DRAWINGS">FIG. 7A</figref> is an example flowchart illustrating the transmission of data between the client and host software application by an object property setter from the server's perspective, in accordance with certain embodiments included in the present disclosure; and
0017<figref idref="DRAWINGS">FIG. 7B</figref> is an example flowchart illustrating the transmission of data between the client and host software application by an object property setter from the client's perspective, in accordance with certain embodiments included in the present disclosure.
DETAILED DESCRIPTION
0018<figref idref="DRAWINGS">FIG. 1</figref> illustrates an example system <b>100</b> for the management of data between a client and a hosted software application by an object property setter. An object property setter is a function, or web service, that can be associated with data by a development environment. The object property setter functions to communicate targeted data to a hosted software application for processing of the data. The data, in one instance, is in the form of a business object. “Business object” is typically used herein to describe some information or value collected, known, stored, determined, received, or otherwise identified by some component of system <b>100</b> to be associated with a user's role in a business, the user's business, a business application or process, and/or business activity of the user, business, or process or data involved therein. Generally, the business object is a representation of a type of a uniquely identifiable business entity (an object instance) described by a structural model. In the architecture, processes may typically operate on business objects. Business objects represent a specific view on some well-defined business content. In other words, business objects represent content, which a typical business user would expect and understand with little explanation. Business objects are further categorized as business process objects and master data objects. A master data object is an object that encapsulates master data (i.e., data that is valid for a period of time). A business process object, which is the kind of business object generally found in a process component, is an object that encapsulates transactional data (i.e., data that is valid for a point in time).
0019Generally, system <b>100</b> uses the hosted application <b>130</b> to allow developers to provide increased functionality to business applications by identifying business objects with interrelated data and to allow this interrelated data to be intelligently updated upon a change to one or more portions of the data by a client <b>104</b>. This hosted application <b>130</b> may, among other things, be a hosted software application, which achieves a rich, internet application for the client <b>104</b> by minimizing scripts, business logic, and processing at client <b>104</b>. Hosted application <b>130</b> may additionally provide for increased bandwidth availability, thereby increasing data transmission speed between client <b>104</b> and server <b>102</b>, as well as allowing for increased implementations by small customers. Further, hosted application <b>130</b> may be updated with software code fixes, as appropriate, without requiring any patching, upgrading, or other updating on client <b>104</b>.
0020Referring to illustrated <figref idref="DRAWINGS">FIG. 1</figref>, the hosted application <b>130</b> resides on server <b>102</b> providing various business processes and functionality to client <b>104</b>. The server <b>102</b> may be a server controlled by the developer of the system <b>100</b>, on a server controlled by the user of the system <b>100</b>, or alternatively, on a server at a third party providing hosting services. Accordingly, system <b>100</b> may implement a suite of tightly integrated products that offer business such as client <b>104</b> the ability to implement custom software applications through drag-and-drop or other modeling techniques, without the necessity of customized code.
0021System <b>100</b> is typically a distributed client/server system that spans one or more networks such as <b>112</b>. As described above, rather than being delivered as packaged software, system <b>100</b> may represent a hosted solution, often for an enterprise or other small business that may scale cost-effectively and help drive faster adoption. In this case, portions of the hosted solution may be developed by a first entity, while other components are developed by a second entity. These entities may participate in any suitable form of revenue or cost sharing as appropriate. Moreover, the processes or activities of the hosted solution may be distributed amongst these entities and their respective components. Accordingly, it may enable third-party service providers to offer their services at the business object level through a seamless user-experience. In another example, system <b>100</b> may implement a component-based architecture and strong platform helping engage service providers to develop targeted solutions for sub-verticals or others types of markets. This implementation may emphasize features that helps benefit businesses that sell via online stores, thereby leveraging strategic relationships to bring the product to market. In such embodiments, data may be communicated or stored in an encrypted format. This encrypted communication may be between the client and the host or amongst various components of the host. Further, system <b>100</b> may store data (user, transaction, service provider, and such) at a relatively central location (over WAN), while concurrently maintaining local data, including a remote business object, at the user's site for redundancy and to allow processing during downtime. But system <b>100</b> may be in a dedicated enterprise environment—across a local area network (over LAN) or subnet—or any other suitable environment without departing from the scope of this disclosure.
0022Turning to the illustrated embodiment, system <b>100</b> includes or is communicably coupled with server <b>102</b>, one or more clients <b>104</b>, one or more service providers or vendors <b>106</b>, and one or more customers <b>108</b>, at least some of which communicate across network <b>112</b>. Server <b>102</b> comprises an electronic computing device operable to receive, transmit, process, and store data associated with system <b>100</b>. Each computer is generally intended to encompass any suitable processing device. For example, although <figref idref="DRAWINGS">FIG. 1</figref> illustrates one server <b>102</b> that may be used with the disclosure, system <b>100</b> can be implemented using computers other than servers, as well as a server pool. Indeed, server <b>102</b> may be any computer or processing device such as, for example, a blade server, general-purpose personal computer (PC), Macintosh, workstation, Unix-based computer, or any other suitable device. In other words, the present disclosure contemplates computers other than general purpose computers as well as computers without conventional operating systems. Server <b>102</b> may be adapted to execute an operating system including Linux, UNIX, Windows Server, or any other suitable operating system. According to one embodiment, server <b>102</b> may also include or be communicably coupled with a web server and/or a mail server.
0023Illustrated server <b>102</b> includes local memory <b>120</b>. Memory <b>120</b> may include any memory or database module and may take the form of volatile or non-volatile memory including, without limitation, magnetic media, optical media, random access memory (RAM), read-only memory (ROM), removable media, or any other suitable local or remote memory component. Illustrated memory <b>120</b> includes hosted business object <b>140</b>. But memory <b>120</b> may also include any other appropriate data such as VPN applications or services, firewall policies, a security or access log, print or other reporting files, HTML files or templates, data classes or object interfaces, child software applications or sub-systems, and others.
0024Business objects, as used herein, are exemplified by hosted business object <b>140</b> stored in memory <b>120</b> located on server <b>102</b> and remote business object <b>116</b> processed, or otherwise manipulated, by client <b>104</b> and stored in client <b>104</b> memory. As described, business objects <b>140</b> and <b>116</b> may also include one or more properties. Further, each business object property, as exemplified by remote business object property <b>116</b>a, may include one or more sub-properties. Although two instances of business objects are shown, for example hosted business object <b>140</b> and remote business object <b>116</b>, these two business objects are near identical, i.e., are mirrors of each other. Although the two illustrated business objects are mirror images of one another, remote business object <b>116</b> may be instantiated in two fashions. For example, server <b>102</b> may instantiate remote business object <b>116</b> on client <b>104</b> without any action taken by client <b>104</b>. Conversely, server <b>102</b> may communicate enough data to client <b>104</b> such that client <b>104</b>, itself, instantiates remote business object <b>116</b>.
0025Illustrated business objects <b>140</b> and <b>116</b> include any parameters, pointers, variables, algorithms, instructions, rules, files, links, or other data for easily providing secondary content for any combination of user context and application data at any appropriate level of granularity. It will be understood that such various business object data may be stored or processed using at least one data structure, object, record or file. In a more specific example, a business object may include the user's personal contact information, weather information, a profit and loss report of a company, an OLAP (on-line analytical processing) report, portion of a sales order, an online quotation, as well as many others. In some embodiments, a business object (or pointers thereto) may be stored in one or more tables in a relational database described in terms of SQL statements or scripts. In another embodiment, a business object may be formatted, stored, or defined as various data structures in text files, eXtensible Markup Language (XML) documents, Virtual Storage Access Method (VSAM) files, flat files, Btrieve files, comma-separated-value (CSV) files, internal variables, or one or more libraries. In short, a business object may comprise one table or file or a plurality of tables or files stored on one computer or across a plurality of computers in any appropriate format.
0026Illustrated server <b>102</b> also includes processor <b>125</b>. Processor <b>125</b> executes instructions and manipulates data to perform the operations of server <b>102</b>. Processor <b>125</b> is, for example, a central processing unit (CPU), a blade, an application specific integrated circuit (ASIC), or a field-programmable gate array (FPGA). Although <figref idref="DRAWINGS">FIG. 1</figref> illustrates a single processor <b>125</b> in server <b>102</b>, multiple processors <b>125</b> may be used according to particular needs and reference to processor <b>125</b> is meant to include multiple processors <b>125</b> where applicable. In the illustrated embodiment, processor <b>125</b> executes hosted application <b>130</b>.
0027At a high level, the hosted application <b>130</b> is operable to receive and/or process an updated remote business object property <b>150</b> from client <b>104</b> and present at least a subset of the results to the particular client via an interface. More specifically, hosted application <b>130</b> is any application, program, module, process, or other software that receives an updated business object property <b>150</b> from a client and presents the updated hosted business object <b>140</b><i>a </i>to the client <b>104</b>. Regardless of the particular implementation, “software” may include software, firmware, wired or programmed hardware, or any combination thereof as appropriate. Indeed, hosted application <b>130</b> may be written or described in any appropriate computer language including C, C++, Java, Visual Basic, assembler, Perl, any suitable version of 4GL, as well as others. For example, hosted application <b>130</b> may be a composite application, portions of which may be implemented as Enterprise Java Beans (EJBs) or the design-time components may have the ability to generate run-time implementations into different platforms, such as J2EE (Java 2 Platform, Enterprise Edition), ABAP (Advanced Business Application Programming) objects, or Microsoft's .NET. It will be understood that while hosted application <b>130</b> is illustrated in <figref idref="DRAWINGS">FIG. 2</figref> as including a number of sub-modules, exemplified by deployment module <b>118</b>, business application <b>132</b>, and third party modules <b>134</b> respectively, hosted application <b>130</b> may include numerous other sub-modules (as in <figref idref="DRAWINGS">FIG. 2</figref>) or may instead be a single multi-tasked module that implements the various features and functionality through various objects, methods, or other processes. Further, while illustrated as internal to server <b>102</b>, one or more processes associated with hosted application <b>130</b> may be stored, referenced, or executed remotely. For example, a portion of hosted application <b>130</b> may be a web service that is remotely called, while another portion of hosted application <b>130</b> may be an interface object bundled for processing at remote client <b>104</b>. Moreover, hosted application <b>130</b> may be a child or sub-module of another software module or enterprise application (not illustrated) without departing from the scope of this disclosure.
0028Illustrated hosted application <b>130</b> implements various business rules in processing business objects and/or business object properties. As used herein, “business rules” are generally algorithms, rules, logic, code, or any instructions for utilizing an updated business object property to update a business object or related business object. For example, a business object may be a “Quotation,” which may include one or more business object properties such as “Price,” “Total,” “Ship-to address,” “Discount,” or any other appropriate property. When client <b>104</b> updates a business object property, such as “Discount,” one or more additional properties may require updating as well. Deployment module <b>118</b> communicates an updated remote business object property <b>150</b> to hosted application <b>130</b>, so that the hosted business object may be updated as required. Business application <b>132</b> utilizes business rules in order to update the hosted business object <b>140</b> according to the value of updated remote business object property <b>150</b>. Although business rules are described as being included within business application <b>132</b>, hosted application <b>130</b> may also include business rules, such that an updated remote business object property <b>150</b> may be massaged or normalized prior to use by business application <b>132</b>.
0029Hosted application <b>130</b> also includes deployment module <b>118</b>, which receives data from client <b>104</b> for processing and communicates the processed data back to client <b>104</b>. In one embodiment, deployment module <b>118</b> receives an updated remote business object property <b>150</b> from client <b>104</b> and relays this data to business application <b>132</b>. The deployment module <b>118</b> further receives processed data from the business application <b>132</b> after the business rules have been applied by business application <b>132</b>. The data received from the business application <b>132</b> may be the updated hosted business object <b>140</b>a. Subsequently, the deployment module <b>118</b> communicates the updated hosted business object <b>140</b><i>a </i>to client <b>104</b>. Additionally, deployment module <b>118</b> may communicate one or more updated related business objects <b>140</b><i>b </i>to client <b>104</b>.
0030Processor <b>125</b> may also execute a development environment <b>110</b>, which may include or reference a server-side object property setter <b>114</b>, which often allows a developer or component to indicate various targeted business object properties. Development environment <b>110</b>, generally, is any software application designed to develop business software for clients <b>104</b> or other entities. Further, development environment <b>110</b> allows a developer to develop, update, etc., business applications, business rules, and business objects.
0031Development environment <b>110</b> also includes object property setter <b>114</b> as illustrated in <figref idref="DRAWINGS">FIG. 1</figref>. Although illustrated in the singular in <figref idref="DRAWINGS">FIG. 1</figref>, there may be multiple object property setters <b>114</b> on model environment <b>110</b>. The modeler, or developer, identifies a hosted business object that will have a corresponding remote business object at a client in a hosted environment. The modeler may set one or more business object properties with an object property setter <b>114</b> in the development environment <b>110</b>. In other words, the object property setter <b>114</b> allows the modeler to set, select, attach, or otherwise provide the business object the capability to send, communicate, or transmit targeted information. In one embodiment, this targeted information includes an updated business object property. In another embodiment, this targeted information includes an updated business object. In still another embodiment, this targeted information includes a business object sub-property, field, table, or any other user control. The hosted business object properties are associated with business rules in the hosted environment as part of the business application <b>132</b>, such that the updated remote business object property <b>150</b> may be processed by the business rules to generate an updated hosted business object <b>140</b><i>a. </i>In another example, the business object property is associated with an object property setter through the use of drag-and-drop techniques in the development environment <b>110</b>.
0032Although development environment <b>110</b> is illustrated in <figref idref="DRAWINGS">FIG. 1</figref> as residing on server <b>102</b>, this aspect may also reside on a server located at, or controlled by service providers/vendors <b>106</b>. Further, development environment <b>110</b> may be located on a server located at, or controlled, by any other third party. As another example, development environment <b>110</b> may reside on server <b>102</b> but still be accessible to service providers/vendors <b>106</b> or other third parties.
0033Server <b>102</b> may also include interface <b>117</b> for communicating with other computer systems, such as clients <b>104</b>, over network <b>112</b> in a client-server or other distributed environment. In certain embodiments, server <b>102</b> receives data from internal or external senders through interface <b>117</b> for storage in memory <b>120</b> and/or processing by processor <b>125</b>. Generally, interface <b>117</b> comprises logic encoded in software and/or hardware in a suitable combination and operable to communicate with network <b>112</b>. More specifically, interface <b>117</b> may comprise software supporting one or more communications protocols associated with communications network <b>112</b> or hardware operable to communicate physical signals.
0034Network <b>112</b> facilitates wireless or wireline communication between computer server <b>102</b> and any other local or remote computer, such as clients <b>104</b>. Network <b>112</b> may be all or a portion of an enterprise or secured network. In another example, network <b>112</b> may be a VPN merely between server <b>102</b> and client <b>104</b> across wireline or wireless link. Such an example wireless link may be via 802.11a, 802.11b, 802.11g, 802.11n, 802.20, WiMax, and many others. While illustrated as a single or continuous network, network <b>112</b> may be logically divided into various sub-nets or virtual networks without departing from the scope of this disclosure, so long as at least portion of network <b>112</b> may facilitate communications between server <b>102</b> and at least one client <b>104</b>. In another example, some vendors <b>106</b> or customers <b>108</b> may represent local vendors <b>106</b> or “walk-in customers <b>108</b>, respectively, which physically interact with client <b>104</b> without use of network <b>112</b>. In other words, network <b>112</b> encompasses any internal or external network, networks, sub-network, or combination thereof operable to facilitate communications between various computing components in system <b>100</b>. Network <b>112</b> may communicate, for example, Internet Protocol (IP) packets, Frame Relay frames, Asynchronous Transfer Mode (ATM) cells, voice, video, data, and other suitable information between network addresses. Network <b>112</b> may include one or more local area networks (LANs), radio access networks (RANs), metropolitan area networks (MANs), wide area networks (WANs), all or a portion of the global computer network known as the Internet, and/or any other communication system or systems at one or more locations. In certain embodiments, network <b>112</b> may be a secure network associated with the enterprise and certain remote clients <b>104</b>.
0035Client <b>104</b> is any computing device operable to connect or communicate with server <b>102</b> or network <b>112</b> using any communication link. At a high level, each client <b>104</b> includes or executes at least GUI <b>136</b> and comprises an electronic computing device operable to receive, transmit, process, and store any appropriate data associated with system <b>100</b>. While illustrated separately, client <b>104</b> typically includes local memory (shown with remote business object <b>116</b>) or is coupled with some relatively remote or distributed memory that may be quickly accessed. It will be understood that there may be any number of clients <b>104</b> communicably coupled to server <b>102</b>. Further, “client,” “business,” and “user” may be used interchangeably as appropriate without departing from the scope of this disclosure. Moreover, for ease of illustration, each client <b>104</b> is described in terms of being used by one user. But this disclosure contemplates that many users may use one computer or that one user may use multiple computers. In certain situations, users may include owners, bookkeepers, as well as third party or outside accountants. For the business owner, system <b>100</b> may provide or make available, for example, through client <b>104</b> and hosted application <b>130</b>: i) business status information (seven-day profit & loss report, daily bank statement); ii) customer information (contact information, recent purchases, payment history, credit report); and iii) product information (inventory levels, vendor information, unit cost). In another example, bookkeepers typically do invoicing, bill paying, payroll (whether directly or preparing data for a payroll service), and general banking. For this bookkeeper, system <b>100</b> may provide or make available, for example, through client <b>104</b> and hosted application <b>130</b>: i) transaction documentation (purchase orders, invoices); ii) accounting basics (chart of accounts, accounts receivable, accounts payable, tax preparation); iii) human resources information (employee information, benefits tracking); and iv) banking activities (monthly statement reconciliation, business checking, business credit card transactions, customer credit card transactions). For outside accountants, system <b>100</b> may provide or make available, for example, through client <b>104</b> and hosted application <b>130</b>: i) a detailed, professional view of the business; ii) analytic tools to drill down to root causes of cash shortfalls or windfalls; iii) tools to project trends and test the effect of decisions; iv) sophisticated business reporting tools to summarize trends and status graphically for the owner; v) annotation tools so they can leave notes in the books for the bookkeeper and for their own future reference; and vi) import and export from third party accounting or business software.
0036As used in this disclosure, client <b>104</b> is any person, department, organization, small business, enterprise, or any other entity that may use or request others to use system <b>100</b>, namely hosted application <b>130</b>. For simplicity, client <b>104</b> may encompass a personal computer, touch screen terminal, workstation, network computer, kiosk, wireless data port, smart phone, personal data assistant (PDA), one or more processors within these or other devices, or any other suitable processing device used by or for the benefit of client <b>104</b>. For example, client <b>104</b> may be a PDA operable to wirelessly connect with an external or unsecured network. In another example, client <b>104</b> may comprise a laptop that includes an input device, such as a keypad, touch screen, mouse, or other device that can accept information, and an output device that conveys information associated with the operation of server <b>102</b> or clients <b>104</b>, including digital data, visual information, or GUI <b>136</b>. Both the input device and output device may include fixed or removable storage media such as a magnetic computer disk, CD-ROM, or other suitable media to both receive input from and provide output to users of clients <b>104</b> through the display, namely, the client portion of GUI or application interface <b>136</b>. Finally, in another embodiment, client <b>104</b> may receive the updated business object <b>140</b><i>a </i>and update a local business object, e.g. a business object stored on or processed by client <b>104</b>. Should there be any degree of loss of connectivity between client <b>104</b> and server <b>102</b>, client <b>104</b> may be operable to update a server-based business object according to local business rules and a local business object, both stored on client <b>104</b>. Further, this disclosure contemplates that client <b>104</b> may be operable to update the server-based business object even without a loss of connectivity between client <b>104</b> and server <b>102</b>.
0037GUI <b>136</b> comprises a graphical user interface operable to allow the user of client <b>104</b> to interface with at least a portion of system <b>100</b> for any suitable purpose, such as viewing application or other transaction data. Generally, GUI <b>136</b> provides the particular user with an efficient and user-friendly presentation of data provided by or communicated within system <b>100</b>. As shown in later figures, GUI <b>136</b> may comprise a plurality of customizable frames or views having interactive fields, pull-down lists, and buttons operated by the user. For example, GUI <b>136</b> is operable to display certain remote business objects <b>116</b> in a user-friendly form based on the displayed data. Additionally, GUI <b>136</b> may operate intelligently, or execute client-side functionality, so as to only communicate one or more updated remote business object properties <b>116</b>a to server <b>102</b>. This functionality may be embedded in GUI <b>136</b>, a web service, or a Java applet that is sent from the server <b>102</b> to the client <b>104</b>.
0038GUI <b>136</b> may also present a plurality of portals or dashboards. For example, GUI <b>136</b> may display a portal that allows users to view, create, and manage historical and real-time reports including role-based reporting and such. Generally, historical reports provide critical information on what has happened including static or canned reports that require no input from the user and dynamic reports that quickly gather run-time information to generate the report. Of course, reports may be in any appropriate output format including PDF, HTML, and printable text. Real-time dashboards often provide table and graph information on the current state of the data, which may be supplemented by business objects. GUI <b>136</b> is often configurable, supporting a combination of tables and graphs (bar, line, pie, status dials, etc.), and is able to build real-time dashboards, where business object <b>140</b> (as well the displayed application or transaction data) may be relocated, resized, and such. It should be understood that the term graphical user interface may be used in the singular or in the plural to describe one or more graphical user interfaces and each of the displays of a particular graphical user interface. Indeed, reference to GUI <b>136</b> may indicate a reference to the front-end or a component of hosted application <b>130</b>, as well as the particular interface accessible via client <b>104</b>, as appropriate, without departing from the scope of this disclosure. Therefore, GUI <b>136</b> contemplates any graphical user interface, such as a generic web browser or touch screen that processes information in system <b>100</b> and efficiently presents the results to the user. Server <b>102</b> can accept data from client <b>104</b> via the web browser (e.g., Microsoft Internet Explorer or Netscape Navigator) and return the appropriate HTML or XML responses to the browser using network <b>112</b>.
0039<figref idref="DRAWINGS">FIG. 2</figref> illustrates an example hosting infrastructure implementing various processes and modules in accordance with one embodiment of the system of <figref idref="DRAWINGS">FIG. 1</figref>. Of course, while described as a hosted solution, any similar internal or third party implementation may suffice and be within the scope of this disclosure. Returning to the illustration, hosted application <b>130</b> includes a deployment module <b>118</b>, business application <b>132</b>, as well as a number of services or modules <b>134</b>. In this example, business application <b>132</b> may be developed or owned by a first entity (although potentially hosted by another), while some or all of the service modules <b>134</b> may be developed or owned by a secondary entity (who may also be the host). While described in more detail in <figref idref="DRAWINGS">FIG. 3</figref>, application <b>132</b> may be considered business software or solution that processes updated data from client <b>104</b> communicated through the deployment module <b>118</b> according to business rules contained in application <b>132</b>. More specifically, an example application <b>132</b> may be a computer application for performing any suitable business process by implementing or executing a plurality of steps.
0040For example, the small business services module <b>134</b><i>c </i>may comprise a “one-stop” center to enhance aspects of online operations. Such services may include: i) web hosting or tools and infrastructure to build a professional looking web site; ii) merchant solutions—platform to build, manage, and market an online store; iii) business email—communications with custom email addresses, spam protection, and email storage; iv) domain registration; v) marketing tools—local enhanced listing and sponsored search; vi) internet access; and vii) recruiting services or online job postings.
0041<figref idref="DRAWINGS">FIG. 3</figref> illustrates more detail of example business application <b>132</b> that, among other things, receives an updated remote business object property <b>150</b> from deployment module <b>118</b> and processes this property according to business rules contained within the application <b>132</b> in accordance with one embodiment of the present disclosure. For example, as the user proceeds through the particular business process (or changes processes), hosted application <b>130</b> may automatically update the hosted business object <b>140</b> based on this progress or step in the process. Such dynamic presentation within application <b>132</b> may deliver quick access to highly accurate, business-critical information, empower business users, or provide end-to-end visibility, while concurrently offering an easy-to-use interface.
0042For example, application <b>132</b> may be a composite application, or an application built on other applications, which includes an object access layer (OAL) and a service layer. In this example, application <b>132</b> may execute or provide a number of application services, such as customer relationship management (CRM) systems, human resources management (HRM) systems, financial management (FM) systems, project management (PM) systems, knowledge management (KM) systems, e-commerce compatibly and functionality, and electronic file and mail systems. Such an object access layer is operable to exchange data with a plurality of enterprise base systems and to present the data to a composite application through a uniform interface. The example service layer is operable to provide services to the composite application. These layers may help the composite application to orchestrate a business process in synchronization with other existing processes (e.g., native processes of enterprise based systems) and leverage existing investments in the IT platform. Further, composite application <b>132</b> may run on a heterogeneous IT platform. In doing so, composite application <b>132</b> may be cross-functional in that it may drive business processes across different applications, technologies, and organizations. Accordingly, composite application <b>132</b> may drive end-to-end business processes across heterogeneous systems or sub-systems. Application <b>132</b> may also include or be coupled with a persistence layer and one or more application system connectors. Such application system connectors enable data exchange and integration with enterprise sub-systems and may include an Enterprise Connector (EC) interface, an Internet Communication Manager/Internet Communication Framework (ICM/ICF) interface, an Encapsulated PostScript (EPS) interface, and/or other interfaces that provide Remote Function Call (RFC) capability.
0043It will be understood that while this example describes a composite application <b>132</b>, it may instead be a standalone or (relatively) simple software program integrated with other hosted modules <b>134</b> or functionality. Specifically, regardless of the particular hardware or software architecture used, hosted application <b>130</b> is generally capable of allowing multiple users from one or more clients <b>104</b>. System <b>100</b> contemplates using any appropriate combination and arrangement of logical elements implementing some or all of the described functionality. For example, some or a majority of the processing or other techniques may be implemented by business application <b>132</b>, one of the service components <b>134</b>, or other invoked or referenced libraries or sub-modules not illustrated. In another example, application <b>132</b> may also perform processing automatically, which may indicate that the appropriate processing is substantially performed by at least one component of system <b>100</b>, such as that illustrated in <figref idref="DRAWINGS">FIG. 1</figref>. It should be understood that “automatically” further contemplates any suitable administrator or other user interaction with application <b>132</b> or other components of system <b>100</b> without departing from the scope of this disclosure.
0044<figref idref="DRAWINGS">FIG. 4A</figref> depicts an example development environment <b>110</b>, namely a modeling environment, in accordance with one embodiment of the present disclosure. Thus, as illustrated in <figref idref="DRAWINGS">FIG. 1</figref>, development environment <b>110</b> would be a modeling environment <b>110</b>, which includes object property setter <b>114</b>. Object property setter <b>114</b> may be utilized to set one or more properties of the hosted business object <b>140</b> associated with hosted business rules in order for these set properties to be processed according to the hosted business rules. Such a modeling environment <b>110</b> may implement techniques for decoupling models created during design-time from the runtime environment. In other words, model representations for GUIs created in a design time environment are decoupled from the runtime environment in which the GUIs are executed. Often in these environments, a declarative and executable representation for GUIs for applications is provided that is independent of any particular runtime platform, GUI framework, device, or programming language.
0045According to some embodiments, a modeler (or other analyst) may use the model-driven modeling environment <b>110</b> to create pattern-based or freestyle user interfaces using simple drag-and-drop services. Because this development may be model-driven, the modeler can typically compose an application using models of business objects without having to write much, if any, code. In some cases, this example modeling environment <b>110</b> may provide a personalized, secure interface that helps unify enterprise applications, information, and processes into a coherent, role-based portal experience. Further, the modeling environment <b>110</b> may allow the developer to access and share information and applications in a collaborative environment. In this way, virtual collaboration rooms allow developers to work together efficiently, regardless of where they are located, and may enable powerful and immediate communication that crosses organizational boundaries while enforcing security requirements. Indeed, the modeling environment <b>110</b> may provide a shared set of services for finding, organizing, and accessing unstructured content stored in third-party repositories and content management systems across various networks <b>112</b>. Classification tools may automate the organization of information, while subject-matter experts and content managers can publish information to distinct user audiences. Regardless of the particular implementation or architecture, this modeling environment <b>110</b> may allow the developer to easily model hosted business objects <b>140</b> using this model-driven approach.
0046In certain embodiments, the modeling environment <b>110</b> may implement or utilize a generic, declarative, and executable GUI language (generally described as XGL). This example XGL is generally independent of any particular GUI framework or runtime platform. Further, XGL is normally not dependent on characteristics of a target device on which the graphic user interface is to be displayed and may also be independent of any programming language. XGL is used to generate a generic representation (occasionally referred to as the XGL representation or XGL-compliant representation) for a design-time model representation. The XGL representation is thus typically a device-independent representation of a GUI. The XGL representation is declarative in that the representation does not depend on any particular GUI framework, runtime platform, device, or programming language. The XGL representation can be executable and therefore can unambiguously encapsulate execution semantics for the GUI described by a model representation. In short, models of different types can be transformed to XGL representations.
0047The XGL representation may be used for generating representations of various different GUIs and supports various GUI features including full windowing and componentization support, rich data visualizations and animations, rich modes of data entry and user interactions, and flexible connectivity to any complex application data services. While a specific embodiment of XGL is discussed, various other types of XGLs may also be used in alternative embodiments. In other words, it will be understood that XGL is used for example description only and may be read to include any abstract or modeling language that can be generic, declarative, and executable.
0048Turning to the illustrated embodiment in <figref idref="DRAWINGS">FIG. 4A</figref>, modeling tool <b>440</b> may be used by a GUI designer or business analyst during the application design phase to create a model representation <b>402</b> for a GUI application. It will be understood that modeling environment <b>110</b> may include or be compatible with various different modeling tools <b>440</b> used to generate model representation <b>402</b>. This model representation <b>402</b> may be a machine-readable representation of an application or a domain specific model. Model representation <b>402</b> generally encapsulates various design parameters related to the GUI such as GUI components, dependencies between the GUI components, inputs and outputs, and the like. Put another way, model representation <b>402</b> provides a form in which the one or more models can be persisted and transported, and possibly handled by various tools such as code generators, runtime interpreters, analysis and validation tools, merge tools, and the like. In one embodiment, model representation <b>402</b> maybe a collection of XML documents with a well-formed syntax.
0049Illustrated modeling environment <b>110</b> also includes an abstract representation generator (or XGL generator) <b>404</b> operable to generate an abstract representation (for example, XGL representation or XGL-compliant representation) <b>406</b> based upon model representation <b>402</b>. Abstract representation generator <b>404</b> takes model representation <b>402</b> as input and outputs abstract representation <b>406</b> for the model representation. Model representation <b>402</b> may include multiple instances of various forms or types depending on the tool/language used for the modeling. In certain cases, these various different model representations may each be mapped to one or more abstract representations <b>406</b>. Different types of model representations may be transformed or mapped to XGL representations. For each type of model representation, mapping rules may be provided for mapping the model representation to the XGL representation <b>406</b>. Different mapping rules may be provided for mapping a model representation to an XGL representation.
0050This XGL representation <b>406</b> that is created from a model representation may then be used for processing in the runtime environment. For example, the XGL representation <b>406</b> may be used to generate a machine-executable runtime GUI (or some other runtime representation) that may be executed by a target device. As part of the runtime processing, the XGL representation <b>406</b> may be transformed into one or more runtime representations, which may indicate source code in a particular programming language, machine-executable code for a specific runtime environment, executable GUI, and so forth, which may be generated for specific runtime environments and devices. Since the XGL representation <b>406</b>, rather than the design-time model representation, is used by the runtime environment, the design-time model representation is decoupled from the runtime environment. The XGL representation <b>406</b> can thus serve as the common ground or interface between design-time user interface modeling tools and a plurality of user interface runtime frameworks. It provides a self-contained, closed, and deterministic definition of all aspects of a graphical user interface in a device-independent and programming-language independent manner. Accordingly, abstract representation <b>406</b> generated for a model representation <b>402</b> is generally declarative and executable in that it provides a representation of the GUI of model <b>402</b> that is not dependent on any device or runtime platform, is not dependent on any programming language, and unambiguously encapsulates execution semantics for the GUI. The execution semantics may include, for example, identification of various components of the GUI, interpretation of connections between the various GUI components, information <b>5</b> identifying the order of sequencing of events, rules governing dynamic behavior of the GUI, rules governing handling of values by the GUI, and the like. The abstract representation <b>406</b> is also not GUI runtime-platform specific. The abstract representation <b>406</b> provides a self-contained, closed, and deterministic definition of all aspects of a graphical user interface that is device independent and language independent.
0051Abstract representation <b>406</b> is such that the appearance and execution semantics of a GUI generated from the XGL representation work consistently on different target devices irrespective of the GUI capabilities of the target device and the target device platform. For example, the same XGL representation may be mapped to appropriate GUIs on devices of differing levels of GUI complexity (i.e., the same abstract representation may be used to generate a GUI for devices that support simple GUIs and for devices that can support complex GUIs), the GUI generated by the devices are consistent with each other in their appearance and behavior.
0052Abstract generator <b>404</b> may be configured to generate abstract representation <b>406</b> for models of different types, which may be created using different modeling tools <b>440</b>. It will be understood that modeling environment <b>110</b> may include some, none, or other sub-modules or components as those shown in this example illustration. In other words, modeling environment <b>110</b> encompasses the design-time environment (with or without the abstract generator or the various representations), a modeling toolkit (such as <b>440</b>) linked with a developer's space, or any other appropriate software operable to decouple models created during design-time from the runtime environment. Abstract representation <b>406</b> provides an interface between the design time environment and the runtime environment. As shown, this abstract representation <b>406</b> may then be used by runtime processing.
0053As part of runtime processing, modeling environment <b>110</b> may include various runtime tools <b>408</b> and may generate different types of runtime representations based upon the abstract representation <b>406</b>. Examples of runtime representations include device or language-dependent (or specific) source code, runtime platform-specific machine-readable code, GUIs for a particular target device, and the like. The runtime tools <b>408</b> may include compilers, interpreters, source code generators, and other such tools that are configured to generate runtime platform-specific or target device-specific runtime representations of abstract representation <b>406</b>. The runtime tool <b>408</b> may generate the runtime representation from abstract representation <b>406</b> using specific rules that map abstract representation <b>406</b> to a particular type of runtime representation. These mapping rules may be dependent on the type of runtime tool, characteristics of the target device to be used for displaying the GUI, runtime platform, and/or other factors. Accordingly, mapping rules may be provided for transforming the abstract representation <b>406</b> to any number of target runtime representations directed to one or more target GUI runtime platforms. For example, XGL-compliant code generators may conform to semantics of XGL, as described below. XGL-compliant code generators may ensure that the appearance and behavior of the generated user interfaces is preserved across a plurality of target GUI frameworks, while accommodating the differences in the intrinsic characteristics of each and also accommodating the different levels of capability of target devices.
0054For example, as depicted in example <figref idref="DRAWINGS">FIG. 4A</figref>, an XGL-to-Java compiler <b>408</b>a may take abstract representation <b>406</b> as input and generate Java code <b>410</b> for execution by a target device comprising a Java runtime <b>412</b>. Java runtime <b>412</b> may execute Java code <b>410</b> to generate or display a GUI <b>414</b> on a Java-platform target device. As another example, an XGL-to-Flash compiler <b>408</b>b may take abstract representation <b>406</b> as input and generate Flash code <b>416</b> for execution by a target device comprising a Flash runtime <b>418</b>. Flash runtime <b>418</b> may execute Flash code <b>416</b> to generate or display a GUI <b>420</b> on a target device comprising a Flash platform. As another example, an XGL-to-DHTML (dynamic HTML) interpreter <b>408</b><i>c </i>may take abstract representation <b>406</b> as input and generate DHTML statements (instructions) on the fly which are then interpreted by a DHTML runtime <b>422</b> to generate or display a GUI <b>424</b> on a target device comprising a DHTML platform.
0055It should be apparent that abstract representation <b>406</b> may be used to generate GUIs for Extensible Application Markup Language (XAML) or various other runtime platforms and devices. The same model representation <b>406</b> may be mapped to various runtime representations and device-specific and runtime platform-specific GUIs. In general, in the runtime environment, machine executable instructions specific to a runtime environment may be generated based upon the abstract representation <b>406</b> and executed to generate a GUI in the runtime environment. The same XGL representation may be used to generate machine executable instructions specific to different runtime environments and target devices.
0056According to certain embodiments, the process of mapping a model representation <b>402</b> to an abstract representation <b>406</b> and mapping an abstract representation <b>406</b> to some runtime representation may be automated. For example, design tools may automatically generate an abstract representation for the model representation using XGL and then use the XGL abstract representation to generate GUIs that are customized for specific runtime environments and devices. As previously indicated, mapping rules may be provided for mapping model representations to an XGL representation. Mapping rules may also be provided for mapping an XGL representation to a runtime platform-specific representation.
0057Since the runtime environment uses abstract representation <b>406</b> rather than model representation <b>402</b> for runtime processing, the model representation <b>402</b> that is created during design-time is decoupled from the runtime environment. Abstract representation <b>406</b> thus provides an interface between the modeling environment and the runtime environment. As a result, changes may be made to the design time environment, including changes to model representation <b>402</b> or changes that affect model representation <b>402</b>, generally to not substantially affect or impact the runtime environment or tools used by the runtime environment. Likewise, changes may be made to the runtime environment generally to not substantially affect or impact the design time environment. A designer or other developer can thus concentrate on the design aspects and make changes to the design without having to worry about the runtime dependencies such as the target device platform or programming language dependencies.
0058<figref idref="DRAWINGS">FIG. 4B</figref> depicts an example process for mapping a model representation <b>402</b> to a runtime representation using the example modeling environment I <b>10</b> of <figref idref="DRAWINGS">FIG. 4A</figref> or some other modeling environment. Model representation <b>402</b> may comprise one or more model components and associated properties that describe a data object, such as hosted business object <b>140</b>. As described above, at least one of these model components is based on or otherwise associated with these hosted business objects <b>140</b>. The abstract representation <b>406</b> is generated based upon model representation <b>402</b>. Abstract representation <b>406</b> may be generated by the abstract representation generator <b>404</b>. Abstract representation <b>406</b> comprises one or more abstract GUI components and properties associated with the abstract GUI components. As part of generation of abstract representation <b>406</b>, the model GUI components and their associated properties from the model representation are mapped to abstract GUI components and properties associated with the abstract GUI components. Various mapping rules may be provided to facilitate the mapping. The abstract representation encapsulates both appearance and behavior of a GUI. Therefore, by mapping model components to abstract components, the abstract representation not only specifies the visual appearance of the GUI but also the behavior of the GUI, such as in response to events whether clicking/dragging or scrolling, interactions between GUI components and such.
0059One or more runtime representations <b>450</b>a, including GUIs for specific runtime environment platforms, may be generated from abstract representation <b>406</b>. A device-dependent runtime representation may be generated for a particular type of target device platform to be used for executing and displaying the GUI encapsulated by the abstract representation. The GUIs generated from abstract representation <b>406</b> may comprise various types of GUI elements such as buttons, windows, scrollbars, input boxes, etc. Rules may be provided for mapping an abstract representation to a particular runtime representation. Various mapping rules may be provided for different runtime environment platforms.
0060<figref idref="DRAWINGS">FIG. 5</figref> illustrates the development software encompassing the object property setter in flowchart form, in accordance with one embodiment of the system <b>100</b>. In step <b>502</b>, the modeler identifies a hosted business object <b>140</b> residing on server <b>102</b>. The hosted business object <b>140</b> may be, for example, a “Quotation” as shown in <figref idref="DRAWINGS">FIG. 6A</figref>. A “Quotation,” as one embodiment of a business object, may have one or more properties, such as a “Total” (as, for example, a total price of a product or service) and a “Discount.” Further properties may include a “Ship-to address,” “Tax rate,” and “Billing address,” to name only a few. Additionally, it may be understood that each hosted business object property may include sub-properties, or child properties. For example, a “Ship-to address” property may have one or more sub-properties, such as “Ship-to street,” “Ship-to city,” and “Ship-to zip code.” Sub-properties may be fields, tables, user-control settings, children, or nodes, as appropriate. As described herein, object property setter functionality applies to sub-properties, as well as business object properties.
0061Continuing with <figref idref="DRAWINGS">FIG. 5</figref>, in step <b>504</b>, the modeler determines whether the hosted business object <b>140</b> will lead to a remote business object <b>116</b> located on the client <b>104</b>. Should there be no corresponding remote business object <b>116</b>, the modeler returns to identify a second hosted business object <b>140</b>. However, if there is a corresponding remote business object <b>116</b> on client <b>104</b>, the modeler moves to step <b>506</b>.
0062In step <b>506</b>, the modeler utilizes object property setter <b>114</b> to set a property of the hosted business object <b>140</b> associated with business rules located in business application <b>132</b>. The object property setter may be included within a development environment <b>110</b>, as shown in <figref idref="DRAWINGS">FIG. 1</figref>. For example, development environment <b>110</b>, exemplified here as modeling environment <b>110</b>, may include a GUI, which allows the modeler to set the property, as exemplified in <figref idref="DRAWINGS">FIG. 6B</figref>. <figref idref="DRAWINGS">FIG. 6B</figref> depicts the GUI utilized by the modeler to assign an object property setter to a business object property. Although unrelated to the object property setter, this GUI also includes an option to set contextual help in the modeling environment <b>110</b>. In certain situations, contextual help objects can more efficiently provide on-demand or task-sensitive help to users of one or more applications developed using business objects. Contextual help objects may be associated with a field, a screen, an error message, a business process, a best practices level, or any other business object. Often, this business object is a web service that might then be considered a user friendly web service. For example, the executed (or invoked) business object may be graphically linked within a development tool to one or more contextual help objects via metadata in the right time and place. In this fashion, multiple implementations or instances of the particular or similar business objects may reference or link to the help object. In another example, the help objects may be linked to a web service front-end based on events, behavior, situation at design time, and so forth. This may also allow system <b>100</b> to partially or fully decouple the work of the developer and an information developer. Such example aspects may provide a faster learning curve via problem-oriented learning, increase user satisfaction and adoption of such developed business objects by increasing usability, increasing user efficiency with guidance and help, as well as to potentially reduce errors. This may allow the example business owner or enterprise to more easily train the users in a highly targeted fashion. Moreover, graphically linking such contextual help to these business objects may help increase volume readiness for the particular developer, reseller, or host by reducing the need for support.
0063Continuing with step <b>506</b>, as shown in <figref idref="DRAWINGS">FIG. 6B</figref>, one aspect of the GUI in modeling environment <b>110</b> includes the option to use object property setter <b>114</b>. After the modeler identifies a particular hosted business object, the object property setter <b>116</b> is invoked by selecting the automatic setter option in the GUI. The modeler may use the object property setter at varying levels of granularity, as shown in <figref idref="DRAWINGS">FIG. 6B</figref>. For example, the object property setter may be applied to an object property, child property, child object property, or node property. The modeler completes the setting of the property in the hosted business object by applying the setter to a chosen operation, i.e., a business rule located in business application <b>132</b>. As illustrated in <figref idref="DRAWINGS">FIG. 6C</figref>, a model representation of a business object “Quotation” may include at least two object property setters assigned to corresponding business object properties, such as “Discount” and “Total.”
0064In step <b>508</b>, any related business object properties of the set property in the hosted business object <b>140</b> are identified. For example, identification may be accomplished on a property-by-property basis by the modeler. This may require the modeler to identify or know the relationships between various business object properties and/or sub-properties. For example, a related property to the “Discount” business object property may be the “Total” business object property. Thus, when “Discount” property is updated by client <b>104</b>, “Total” will require recalculation according to the business rules in business application <b>132</b>. In order for the “Total” property to be recalculated, the modeler sets this property of the hosted business object, as illustrated in step <b>510</b>. Additional related business object properties may be set as required. The modeler sets a business object property to one or more additional business object properties by any process, which allows the one or more related business object properties to be updated when client-side business object properties are changed by client <b>104</b>. Additionally, identification of a related business object property by the modeler may be accomplished through other modeling techniques, including drag-and-drop functionality.
0065Continuing with step <b>512</b>, in addition to identifying any related business object properties, the modeler may identify one or more related business objects to the particular hosted business object <b>140</b>. Once the related business object (or multiple related business objects) is identified, the modeler may identify one or more related business object properties in the related business object, as shown in step <b>514</b>. Just as the previously identified related business object properties within hosted business object <b>140</b> are set as illustrated in step <b>510</b>, the newly identified related business object properties of the related business object (or objects) are thus set.
0066In another embodiment, identification of related business object properties may occur automatically through the use of the object property setter <b>116</b>. For example, once the modeler sets a particular business object property, any related properties, such as sub-properties or properties within the same level of granularity, may be recalculated based on the updated remote business object property <b>150</b> from client <b>104</b>. Object property setter <b>116</b> may be an intelligent function, which allows for the identification of related business objects, related business object properties, or related business object sub-properties without the need for a modeler, developer, or other analyst. In this embodiment, object property setter <b>116</b> identifies related data, as described previously, based on business rules in business application <b>132</b> or hosted application <b>130</b>.
0067<figref idref="DRAWINGS">FIG. 7A</figref> illustrates one example method <b>700</b> for the management of data between the client and server by an object property setter. In step <b>702</b>, a remote business object <b>116</b> is instantiated on client <b>104</b>, such that the remote business object <b>116</b> is viewable on GUI <b>136</b>. Instantiation may occur, for example, by hosted application <b>130</b>, which sends a hosted business object to client <b>104</b>. As another example, hosted application <b>130</b> may send data associated with hosted business object <b>140</b> to client <b>104</b> such that the client <b>104</b> instantiates remote business object <b>116</b>. Regardless of the particular embodiment, two similar or near identical instances of the business object exist: one on the server session and one in client memory.
0068As described in <figref idref="DRAWINGS">FIG. 1</figref>, client <b>104</b> is connected to server <b>102</b> through the network <b>112</b> and interface <b>117</b>. Thus, hosted application <b>130</b> may operate in the background of the application being viewed by client <b>104</b> through GUI <b>136</b>. In one embodiment, remote business object <b>116</b> is a “Quotation,” which may include one or more of the following adjustable remote business object properties <b>116</b><i>a: </i>“Price,” “Discount,” “Billing address,” “Ship-to address,” “Ship-from address,” “Tax rate,” “Shipping fees,” “Purchaser,” “Seller,” “Manufacturer,” “Payment information,” and “Shipping tracking number.” Additional or fewer business object properties may be included as appropriate. Further, a remote business object property <b>116</b><i>a </i>may contain sub-properties. For example, a “Ship-to address” value may contain one or more sub-properties of “Ship-to street,” “Ship-to city,” “Ship-to state,” and “Ship-to zip.” As described herein, any hosted application <b>130</b> functionality described would apply to properties, sub-properties, or other levels of granularity. Additionally, updated remote business object property <b>150</b> may include either a numerical, textual, or symbolic value or combination thereof, as appropriate, and a value identifier.
0069Updated remote business object property <b>150</b> is received by server <b>102</b> through network <b>112</b> as shown in step <b>704</b>. The updated remote business object property <b>150</b> includes an attached object property setter <b>114</b>. Specifically, deployment module <b>118</b> in hosted application <b>130</b> receives the updated remote business object property <b>150</b>. In another embodiment, updated remote business object <b>150</b><i>a </i>is received by server <b>102</b> if the particular remote business object property <b>116</b><i>a </i>does not have an attached object property setter.
0070In step <b>706</b>, the object property setter attached to the updated remote business object property validates the property value, ensuring that client <b>104</b> has entered a legitimate value. One example of an invalid business object value would be the insertion of character values into a remote business object property <b>116</b><i>a </i>by client <b>104</b> when only a numerical value is acceptable, or vice versa. Another example would be the. insertion of an out-of-range numerical value into a remote business object property <b>116</b><i>a </i>by client <b>104</b>. This determination occurs on server <b>102</b>, thus eliminating business logic associated with this functionality on client <b>104</b>.
0071As shown in step <b>708</b>, hosted application <b>130</b> communicates a response to client <b>104</b> through interface <b>117</b> and network <b>112</b>. This response includes, for example, a textual message informing client <b>104</b> that an invalid value was entered for updated remote business object property <b>150</b>. This message may further include the constraints on the value. For example, if an invalid value is entered for the “Discount,” the message may inform client <b>104</b> that “Discount must be a numerical integer between 0 and XX,” with “XX” being an adjustable range maximum. This message would be customizable in the hosted application <b>130</b>. Additionally, the response may include a visual message to the client <b>104</b>. The visual message could be, for example, a color scheme designed to highlight the remote business object property <b>116</b><i>a </i>on GUI <b>136</b>, thus drawing the client's attention to the invalid value. Client <b>104</b> would then be able to enter a valid value.
0072In step <b>710</b>, hosted application <b>130</b> processes the remote business object property <b>150</b> into hosted business object <b>140</b>. Specifically, once deployment module <b>118</b> receives the updated remote business object property <b>150</b> from client <b>104</b>, the updated property is communicated to business application <b>132</b> so that the business rules contained therein may be applied to process the updated remote business object property <b>150</b> into the hosted business object. Processing occurs on server <b>102</b> by utilizing one or more processors <b>125</b>. Hosted business object <b>140</b> includes identical business object properties as remote business object <b>116</b>. Continuing the example used above, the updated remote business object property “Discount” would be processed into the hosted business object <b>150</b>, such that the hosted property value of “Discount” now reflects the updated property value. In another embodiment, updated remote business object <b>150</b><i>a </i>is processed by server <b>102</b> into hosted business object <b>140</b>. This requires the processing of each property and/or sub-property within hosted business object <b>140</b> according to the business rules.
0073Further, in step <b>712</b>, business application <b>132</b> processes any related hosted business object properties affected by the change made to a property by client <b>104</b>. The processing of the related hosted business object properties occurs according to the business rules contained in the application <b>132</b>. For example, should client <b>104</b> update remote business object property “Discount,” other related hosted business object properties, such as “Total” or “Shipping fees,” may require recalculation. Business application <b>132</b> would update the hosted business object properties “Total” and “Shipping fees” according to the updated remote business object property “Discount” and the hosted business rules.
0074Just as related hosted object properties are updated upon a change to a remote business object property <b>116</b>a, related business objects may be processed by business application <b>132</b> as shown in step <b>714</b>. Thus, if client <b>104</b> changes a remote business object property within a remote business object <b>116</b>, other remote business objects may require updating. For example, client <b>104</b> may choose to update the remote business object property “Ship-to address” in remote business object “Quote.” However, this change may affect remote business object “Customer,” which may be a business object containing contact information for a particular customer <b>108</b> of client <b>104</b>, including a “Ship-to address” property. Business application <b>132</b> processes updated remote business object “Ship-to address” into both hosted instances of business objects “Quotation” and “Customer,” thereby ensuring that each hosted business object <b>140</b> is accurate and up-to-date. Thus, client <b>104</b> is assured that updating a single remote business object property results in the modification of all related business objects, properties, and sub-properties residing on server <b>102</b>.
0075In step <b>716</b>, hosted application <b>130</b> communicates an updated hosted business object <b>140</b><i>a </i>through interface <b>117</b> and network <b>112</b> to client <b>104</b>. GUI <b>136</b> would thus display remote business object <b>116</b>, which now corresponds to updated hosted business object <b>140</b><i>a. </i>In this way, hosted application <b>130</b> ensures that both the hosted and remote business objects are identical, while requiring minimal transmission bandwidth and minimal business logic at client <b>104</b>. Client <b>104</b> views the aforementioned process as realtime updating of remote business object <b>116</b> due to increased GUI <b>136</b> response time and the off-loading of processing onto server <b>102</b>.
0076<figref idref="DRAWINGS">FIG. 7B</figref> illustrates another example method <b>750</b> for the management of data between the client and server by an object property setter. In step <b>720</b>, a remote business object <b>116</b> is instantiated on client <b>104</b>, such that the remote business object <b>116</b> is viewable on GUI <b>136</b> in step <b>722</b>. As described above, instantiation may occur, for example, by hosted application <b>130</b>, which sends a hosted business object to client <b>104</b>, or conversely, hosted application <b>130</b> may send a portion of a hosted business object to client <b>104</b>, such that the client <b>104</b> instantiates remote business object <b>116</b>. Regardless of the particular embodiment, two identical instances of the business object exist: one on the server session and one in client memory.
0077In step <b>724</b>, client <b>104</b> may choose to update a remote business object property <b>116</b><i>a </i>or not, with the understanding that remote business object <b>116</b> is identical to hosted business object <b>140</b> absent any changes made by client <b>104</b>. Should client <b>104</b> choose to change or update a remote business object property <b>116</b><i>a, </i>this would be accomplished through any typical user interface, such as a keyboard, mouse, touchpad, and/or touch screen. Of course, other suitable input devices or techniques are within the scope of the present disclosure. Continuing the example as described in <figref idref="DRAWINGS">FIG. 7A</figref>, client <b>104</b> updates a remote business object property <b>116</b><i>a, </i>for example, by changing the “Discount” property in the field identified “Discount” and exiting that field.
0078Once client <b>104</b> updates a remote business object property <b>116</b><i>a, </i>for example, a “Discount” property within a “Quotation,” the data transmitted to the server <b>102</b> is dependent on whether an object property setter <b>114</b> is attached to the updated property, as illustrated in step <b>726</b>. If an object property setter is attached, then it communicates only the updated remote business object property <b>150</b> to hosted application <b>130</b> on server <b>102</b>, as shown in step <b>728</b>. For example, once client <b>104</b> changes remote business object property “Discount,” the object property setter attached to the remote instance of this property communicates the changed property to the object property setter attached to the hosted instance of the property. Should the updated remote business object property <b>150</b> have no attached object property setter, then the entirety of remote business object <b>116</b> is communicated to server <b>102</b> for processing in step <b>730</b>.
0079Since processing of the remote business object or any of its properties or sub-properties occurs on server <b>102</b>, as opposed to client <b>104</b>, the client may take no action again until it receives the updated business object <b>140</b><i>a </i>plus related business objects, <b>140</b>b, if any, from server <b>102</b>, as illustrated in step <b>732</b>. In other cases, client <b>104</b> may perform unrelated processing such that downtime (however minimal) is reduced. Once client <b>104</b> receives the updated business object <b>140</b><i>a </i>and one or more updated related business objects <b>140</b><i>b, </i>if any, the client <b>104</b> or server <b>102</b> may instantiate the business objects on client <b>104</b>. The user may then view the updated business objects on GUI <b>136</b>.
0080It will be understood that these methods are for illustration purposes only and that the described or similar processes and techniques may be performed at any appropriate time, including concurrently, individually, or in combination. For example, the processing of related business object properties and related business objects may be executed or otherwise invoked concurrently. In addition, many of the steps in this flowchart may take place simultaneously and/or in different orders than as shown. Moreover, system <b>100</b> may use or implement similar methods with additional steps, fewer steps, and/or different steps, so long as the methods remain appropriate. For example, should the client be partially or totally disconnected from the server for a period of time, i.e. working off-line, a local business object on the client would be updated according to business rules located on the client upon a change to one or more remote business object properties. Thus, the client-instance of the business object would be more up-to-date than the server-instance of the business object. Once the client-server connectivity is reestablished, the hosted business object would be updated by the client according to business rules located on the client.
0081Although this disclosure has been described in terms of certain embodiments and generally associated methods, alterations and permutations of these embodiments and methods will be apparent to those skilled in the art. Accordingly, the above description of example embodiments does not define or constrain this disclosure. Other changes, substitutions, and alterations are also possible without departing from the scope of this disclosure.
Contents5
9 sheets
Sheet 1 Sheet 2 Sheet 3 Sheet 4 Sheet 5 Sheet 6 Sheet 7 Sheet 8 Sheet 9
Every citation, both ways
| Document | Relation | Office | Cited during |
|---|---|---|---|
| US8276115B2 | Cited by | United States of America | Search report |
| WO2010045459A1 | Cited by | World Intellectual Property Organization (WIPO) | International search |
| US9082109B2 | Cited by | United States of America | Applicant |
| US2010169387A1 | Cited by | United States of America | Pre-grant |
| US2013111277A1 | Cited by | United States of America | Pre-grant |
| US2015012669A1 | Cited by | United States of America | Pre-grant |
| US2002078132A1 | Cited by | United States of America | Pre-grant |
| US9582531B2 | Cited by | United States of America | Search report |
| US2011022575A1 | Cited by | United States of America | Pre-grant |
| US8732668B2 | Cited by | United States of America | Search report |
| US2008196006A1 | Cited by | United States of America | Pre-grant |
| US8275647B2 | Cited by | United States of America | Search report |
| US2019050469A1 | Cited by | United States of America | Search report |
| US9021019B2 | Cited by | United States of America | Search report |
| US2009313363A1 | Cited by | United States of America | Pre-grant |
| US2008120593A1 | Cited by | United States of America | Pre-grant |
| US9002984B2 | Cited by | United States of America | Applicant |
| US2009313321A1 | Cited by | United States of America | Pre-grant |
| US9818087B2 | Cited by | United States of America | Applicant |
| US9507748B2 | Cited by | United States of America | Search report |
| US9881279B2 | Cited by | United States of America | Applicant |
| US8589474B2 | Cited by | United States of America | Applicant |
| US2014156617A1 | Cited by | United States of America | Pre-grant |
| US2012291011A1 | Cited by | United States of America | Pre-grant |
| US2009313364A1 | Cited by | United States of America | Pre-grant |
| US10824642B2 | Cited by | United States of America | Search report |
| US8234372B2 | Cited by | United States of America | Applicant |
| US2008126932A1 | Cited by | United States of America | Pre-grant |
| US8260913B2 | Cited by | United States of America | Applicant |
| US8719223B2 | Cited by | United States of America | Applicant |
| US2010049724A1 | Cited by | United States of America | Pre-grant |
| US9292501B2 | Cited by | United States of America | Search report |
| US9208474B2 | Cited by | United States of America | Applicant |
| US9378100B2 | Cited by | United States of America | Applicant |
| US2009171729A1 | Cited by | United States of America | Pre-grant |
| US2010100561A1 | Cited by | United States of America | Pre-grant |
| US9660933B2 | Cited by | United States of America | Applicant |
| US2015319302A1 | Cited by | United States of America | Pre-grant |
| US2014082047A1 | Cited by | United States of America | Pre-grant |
| US10171655B2 | Cited by | United States of America | Search report |
| US8527939B2 | Cited by | United States of America | Applicant |
| US9002985B2 | Cited by | United States of America | Applicant |
| US9727845B2 | Cited by | United States of America | Applicant |
| US2009313320A1 | Cited by | United States of America | Pre-grant |
| US2008209078A1 | Cited by | United States of America | Pre-grant |
| US9031998B2 | Cited by | United States of America | Search report |
| US2002120679A1 | Cites | United States of America | Pre-grant |
| US2004040021A1 | Cites | United States of America | Pre-grant |
| US2005021980A1 | Cites | United States of America | Pre-grant |
| US2008133303A1 | Cites | United States of America | Pre-grant |
| US7237263B1 | Cites | United States of America | Pre-grant |
2 members in 1 office
Priority claims2
| Document | Office | Kind | Date |
|---|---|---|---|
| 63570706 | United States of America | A | |
| US20060635707 | – | – | – |
Members2
| Document | Office | Kind | |
|---|---|---|---|
| US2008141237A1 | United States of America | A1 | |
| US8402060B2 | United States of America | B2 |
78 transactions on the USPTO file
Allowed after 1 non-final rejection, 1 final rejection, 1 RCE and 1 appeal.
- Non-final rejections
- 1
- Final rejections
- 1
- RCEs
- 1
- Appeals
- 1
Over time
Point at a mark for the transactionTransactions
| Event | Code | |
|---|---|---|
| Recordation of Patent Grant MailedPGM/ | PGM/ | |
| Patent Issue Date Used in PTA CalculationAllowedPTAC | PTAC | |
| Email NotificationEML_NTR | EML_NTR | |
| Issue Notification MailedAllowedWPIR | WPIR | |
| Dispatch to FDCD1935 | D1935 | |
| Application Is Considered Ready for IssuePILS | PILS | |
| Response to Reasons for AllowanceREAS | REAS | |
| Issue Fee Payment VerifiedN084 | N084 | |
| Issue Fee Payment ReceivedIFEE | IFEE | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Disposal for a RCE / CPA / R129AbandonedABN9 | ABN9 | |
| Mail Notice of AllowanceAllowedMN/=. | MN/=. | |
| Notice of Allowance Data Verification CompletedAllowedN/=. | N/=. | |
| Mail Notice of Rescinded AbandonmentAbandonedMNRAB | MNRAB | |
| Notice of Rescinded Abandonment in TCsAbandonedNRAB | NRAB | |
| Request for Continued Examination (RCE)RCEX | RCEX | |
| Workflow - Request for RCE - BeginBRCE | BRCE | |
| Email NotificationEML_NTR | EML_NTR | |
| Mailing of Abandonment after Board of AppealsAbandonedMABN10 | MABN10 | |
| Abandonment after Board of AppealsAbandonedABN10 | ABN10 | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Electronic ReviewELC_RVW | ELC_RVW | |
| Email NotificationEML_NTF | EML_NTF | |
| Mail BPAI Decision on Appeal - AffirmedMAPDA | MAPDA | |
| BPAI Decision - Examiner AffirmedAPDA | APDA | |
| Email NotificationEML_NTR | EML_NTR | |
| Docketing Notice Mailed to AppellantAP_DK_M | AP_DK_M | |
| Assignment of Appeal NumberAPAS | APAS | |
| Appeal Awaiting BPAI DocketingAPWD | APWD | |
| Appeal ready for BPAI reviewARBP | ARBP | |
| Exam. Ans. Review CompletePACC | PACC | |
| Electronic ReviewELC_RVW | ELC_RVW | |
| Email NotificationEML_NTF | EML_NTF | |
| Mail Examiner's AnswerMAPEA | MAPEA | |
| Examiner's Answer to Appeal BriefAPEA | APEA | |
| Appeal Brief Review CompleteAPBR | APBR | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Appeal Brief FiledAP.B | AP.B | |
| Mail Appeals conf. Proceed to BPAIMAPCP | MAPCP | |
| Pre-Appeals Conference Decision - Proceed to BPAIAPCP | APCP | |
| Email NotificationEML_NTR | EML_NTR | |
| Mail Examiner Interview Summary (PTOL - 413)MEXIN | MEXIN | |
| Request for Pre-Appeal Conference FiledAP.C | AP.C | |
| Notice of Appeal FiledN/AP | N/AP | |
| Examiner Interview Summary Record (PTOL - 413)EXIN | EXIN | |
| Email NotificationEML_NTR | EML_NTR | |
| Mail Advisory Action (PTOL - 303)MCTAV | MCTAV | |
| Advisory Action (PTOL-303)CTAV | CTAV | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Response after Final ActionA.NE | A.NE | |
| Electronic ReviewELC_RVW | ELC_RVW | |
| Email NotificationEML_NTF | EML_NTF | |
| Mail Final Rejection (PTOL - 326)Final rejectionMCTFR | MCTFR | |
| Final RejectionFinal rejectionCTFR | CTFR | |
| Miscellaneous Incoming LetterLET. | LET. | |
| Email NotificationEML_NTR | EML_NTR | |
| Mail Examiner Interview Summary (PTOL - 413)MEXIN | MEXIN | |
| Examiner Interview Summary Record (PTOL - 413)EXIN | EXIN | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Response after Non-Final ActionA... | A... | |
| Electronic ReviewELC_RVW | ELC_RVW | |
| Email NotificationEML_NTF | EML_NTF | |
| Mail Non-Final RejectionNon-final rejectionMCTNF | MCTNF | |
| Non-Final RejectionNon-final rejectionCTNF | CTNF | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| PG-Pub Issue NotificationPG-ISSUE | PG-ISSUE | |
| Withdraw Flagged for 5/25W525 | W525 | |
| Flagged for 5/25F525 | F525 | |
| New or Additional Drawing FiledC614 | C614 | |
| Preliminary AmendmentA.PE | A.PE | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| IFW TSS Processing by Tech Center CompleteTSSCOMP | TSSCOMP | |
| Corrected filing receiptCFRPT | CFRPT | |
| Application Dispatched from OIPEOIPE | OIPE | |
| Application Is Now CompleteCOMP | COMP | |
| Cleared by OIPE CSRL194 | L194 | |
| IFW Scan & PACR Auto Security ReviewSCAN | SCAN | |
| Initial Exam Team nnIEXX | IEXX |
6 legal events, as the office reported them to INPADOC
Over the term
Point at a mark for the eventEvents
| Event | Code | |
|---|---|---|
| Maintenance fee paymentMAFP | MAFP | |
| Maintenance fee paymentMAFP | MAFP | |
| Fee paymentFPAY | FPAY | |
| AssignmentAS | AS | |
| Information on status: patent grantGrantedPATENTED CASESTCF | STCF | |
| AssignmentAS | AS |
Numbers
- Publication
- 20080141237
- Publication, DOCDB
- 2008141237
- Publication, EPODOC
- US2008141237
- Application
- 11635707
- Application, DOCDB
- 63570706
- Application, EPODOC
- US20060635707
Titles
- English
- Software for managing data between a client and server
Classification
- CPC, 2
- G06F8/60
- G06F8/656
- IPC, 1
- G06F9 44
- USPC, 1
- 717171000