The present invention relates to computer user interfaces. In particular the present invention is directed to automatically updating and generating user interfaces in business process software when a user either adds a step to the process or reorders the steps in the process.
User interfaces are the primary means by which computer users interact with computers. A user interface generally includes a display of one or more controls that provide information to a user, generally in visual form, and receive information from the user to instruct a computing device. One of the primary goals of user interface design is to provide a host of functions to a user in a simple, intuitive form.
As computer software and hardware provide more and more complex functionality, it becomes increasingly important to provide user interfaces that allow users to navigate such complex functionality in a relatively simple and intuitive manner. One area where more and more complex functionality is being provided is in business applications. Such software is generally used by a business to automate, or electronically facilitate some or all of the business's functions. For example, computers are now used to track inventory, manage a human relations department, and perform accounting functions, as well as a host of other functions. Since virtually every company's demands for a business application vary, it would be inefficient to write a complete business solution for each such company from scratch. Instead, such applications are generally created in two parts.
First, a software company, such as Microsoft Corporation of Redmond, Wash., creates a development framework to provide significant tools and software classes related to businesses. Then, a developer, such as an Independent Software Vendor (ISV), builds a tailored or customized business application specific to a company using the framework application. This regime is highly successful in that it provides extremely powerful and adaptable tools in such a manner that they can be significantly tailored and customized in order to match a company's needs.
One potential drawback of the manner in which such software is developed is that, if the company or ISV wishes to alter the manner in which the user interface is displayed, or any parameter therein (such as when the user changes the order of a process or adds additional steps to the process), it is necessary for the source code of the application to be modified. When the source code is modified, it is also then necessary to recompile the source code in order to provide a working altered application. This process is cumbersome because it requires significant work from the ISV. Thus, users of such software and/or ISVs are discouraged from making changes to user interface elements in these types of situations.
It would be a significant benefit to the art if the user interfaces could be more easily updated in response to these changes, without having to recompile the source code.
The present invention provides a significant advance in the updating of user interfaces when the user changes the associated business process.
In one embodiment of the present invention the user changes the process. These changes can include the addition of a step into the process, the reordering of steps in the process, adding or removing an automatic step, etc. When the user makes the change, a process change detection module detects the changes made to the process. The module determines what user interfaces are affected by the change. In some changes only one user interface is affected. However, in other changes a number of user interfaces may be affected by the change. The process change detection component determines what elements on the user interface are affected, and provides this information to a user interface modification module or resource.
The user interface modification module uses the information from the process change detection component to modify the affected user interfaces. If the process change detection component determines that a new user interface is needed, then the user interface modification module can generate or assemble the new interface from a database of default interfaces. Thus, through the use of coding it is possible for the user interface modification resource to “understand” the user interface and construct or modify user interfaces based on this understanding.
Once the user interface has been modified, it is stored in a user interface specification for the application. If additional user interfaces are affected by the change, they are modified according to the same process as the first affected user interface.
The invention is operational with numerous other general purpose or special purpose computing system environments or configurations. Examples of well-known computing systems, environments, and/or configurations that may be suitable for use with the invention include, but are not limited to, personal computers, server computers, hand-held or laptop devices, multiprocessor systems, microprocessor-based systems, set top boxes, programmable consumer electronics, network PCs, minicomputers, mainframe computers, telephony systems, distributed computing environments that include any of the above systems or devices, and the like.
The invention may be described in the general context of computer-executable instructions, such as program modules, being executed by a computer. Generally, program modules include routines, programs, objects, components, data structures, etc. that perform particular tasks or implement particular abstract data types. The invention is designed to be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, program modules are located in both local and remote computer storage media including memory storage devices.
With reference to
Computer 110 typically includes a variety of computer readable media. Computer readable media can be any available media that can be accessed by computer 110 and includes both volatile and nonvolatile media, removable and non-removable media. By way of example, and not limitation, computer readable media may comprise computer storage media and communication media. Computer storage media includes both volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules or other data. Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical disk storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can be accessed by computer 110. Communication media typically embodies computer readable instructions, data structures, program modules or other data in a modulated data signal such as a carrier wave or other transport mechanism and includes any information delivery media. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared and other wireless media. Combinations of any of the above should also be included within the scope of computer readable media.
The system memory 130 includes computer storage media in the form of volatile and/or nonvolatile memory such as read only memory (ROM) 131 and random access memory (RAM) 132. A basic input/output system 133 (BIOS), containing the basic routines that help to transfer information between elements within computer 110, such as during start-up, is typically stored in ROM 131. RAM 132 typically contains data and/or program modules that are immediately accessible to and/or presently being operated on by processing unit 120. By way of example, and not limitation,
The computer 110 may also include other removable/non-removable volatile/nonvolatile computer storage media. By way of example only,
The drives and their associated computer storage media discussed above and illustrated in
A user may enter commands and information into the computer 110 through input devices such as a keyboard 162, a microphone 163, and a pointing device 161, such as a mouse, trackball or touch pad. Other input devices (not shown) may include a joystick, game pad, satellite dish, scanner, or the like. These and other input devices are often connected to the processing unit 120 through a user input interface 160 that is coupled to the system bus, but may be connected by other interface and bus structures, such as a parallel port, game port or a universal serial bus (USB). A monitor 191 or other type of display device is also connected to the system bus 121 via an interface, such as a video interface 190. In addition to the monitor, computers may also include other peripheral output devices such as speakers 197 and printer 196, which may be connected through an output peripheral interface 195.
The computer 110 is operated in a networked environment using logical connections to one or more remote computers, such as a remote computer 180. The remote computer 180 may be a personal computer, a hand-held device, a server, a router, a network PC, a peer device or other common network node, and typically includes many or all of the elements described above relative to the computer 110. The logical connections depicted in
When used in a LAN networking environment, the computer 110 is connected to the LAN 171 through a network interface or adapter 170. When used in a WAN networking environment, the computer 110 typically includes a modem 172 or other means for establishing communications over the WAN 173, such as the Internet. The modem 172, which may be internal or external, may be connected to the system bus 121 via the user input interface 160, or other appropriate mechanism. In a networked environment, program modules depicted relative to the computer 110, or portions thereof, may be stored in the remote memory storage device. By way of example, and not limitation,
Memory 204 is implemented as non-volatile electronic memory such as random access memory (RAM) with a battery back-up module (not shown) such that information stored in memory 204 is not lost when the general power to mobile device 200 is shut down. A portion of memory 204 can be allocated as addressable memory for program execution, while another portion of memory 204 is preferably used for storage, such as to simulate storage on a disk drive.
Memory 204 includes an operating system 212, application programs 214 as well as an object store 216. During operation, operating system 212 is preferably executed by processor 202 from memory 204. Operating system 212, in one preferred embodiment, is a WINDOWS® CE brand operating system commercially available from Microsoft Corporation. Operating system 212 can be designed for mobile devices, and implements database features that can be utilized by applications 214 through a set of exposed application programming interfaces and methods. The objects in object store 216 are maintained by applications 214 and operating system 212, at least partially in response to calls to the exposed application programming interfaces and methods.
Communication interface 208 represents numerous devices and technologies that allow mobile device 200 to send and receive information. The devices include wired and wireless modems, satellite receivers and broadcast tuners to name a few. Mobile device 200 can also be directly connected to a computer to exchange data therewith. In such cases, communication interface 208 can be an infrared transceiver or a serial or parallel communication connection, all of which are capable of transmitting streaming information.
Input/output components 206 include a variety of input devices such as a touch-sensitive screen, buttons, rollers, and a microphone as well as a variety of output devices including an audio generator, a vibrating device, and a display. The devices listed above are by way of example and need not all be present on mobile device 200. In addition, other input/output devices may be attached to or found with mobile device 200 within the scope of the present invention.
Business process 300 includes a series of steps. At a number of the steps the user is presented with a user interface, which allows the user to perform actions for that step in the process. For purposes of this discussion only, some of the user interfaces will be illustrated. However, the user interfaces are provided so that the reader may better understand the changes to the user interfaces that are implemented using the present invention.
Prior to beginning the discussion in detail of
Next the user generates the payment. Generation of the payment is more like writing a check to the supplier. However, in today's complicated business environment, payment is often done electronically, or may even be done against a debt the supplier owes the provider. The final step in the payment process is to post the payment. In this step, for instance, the payment is posted to the general ledger or to the supplier, and all accounts are generally updated to reflect the transaction.
At step 305 the user chooses either to select an invoice or create a new payment. If the user decides to select invoices to pay at step 310, the user is presented with a user interface such as user interface 312 illustrated in
User interface 312 also allows the user to select related tasks 317. These related tasks may take the user to another business process or may allow the user to move forward or backwards in the current process to correct an error in a document or other activity.
In any case, once the user has decided to select items for payments the user highlights the transactions to pay and selects the Submit for Payment button 316. This is indicated at block 310 and this advances the process to the step of creating a payment 320.
Step 320 is accessed in business process 300 from either step 305 or step 310. When accessed from step 305, the user is able to create payments without having previously selected items for payment. When step 320 is accessed from step 310, the user is creating payments from a list of previously selected items for payment. In order to make this selection the user is presented with a user interface such as user interface 321 illustrated in
Once a payment has been created at step 320 the user is then presented with a decision at step 325. The user must decide to update payments, delete payments, or apply the specific documents in the created payments. If the user decides to update payments (such as discovering that they missed a payment) they are returned to step 320 or 310 at step 326. If they chose to delete a payment, they can choose the document in the payments to delete at step 327. If however they decide to apply the documents for payment they advance to step 328. The process of applying a document is a straightforward process that may be done automatically by the process. Step 328 in essence matches an invoice transaction(s) for each payment. The payment process then advances to step 330.
At step 330 the process 300 generates and distributes a payment. The user is presented with a user interface 331 that allows the user to determine the method of the payment. This user interface is illustrated in
At step 340 the user actually posts the payment thereby updating the balance sheets maintained by the system. The user is presented with a user interface such as user interface 341 illustrated in
Once the payment has been posted, process 300 allows the user to correct any mistakes. The user can decide to void the payment, or make any corrections. Once the payment is updated, voided or if no changes are desired then, the process for the specific payment ends at step 350.
Since many business process programs (such as the one that implemented process 300 above), are developed by corporations other than the corporations using the programs, the programs may not include all of the features needed by the user or they may have extraneous features not desired by the user. In past systems, in order to change the process to either include or exclude steps or features, a programmer was required to enter the code of the application program to customize the user interfaces and possibly even the process interface.
For purposes of the present discussion, it is assumed that application 400 includes at least one associated business process 401, and also includes, or is provided with, user interface specification 402. Specification 402 may take the form of a user interface that is hard-coded into the programming instructions of application 400. However, specification 402 need not be contained within application 400. User interface specification 402 can be any set of instructions or data that completely define user interface 406.
As illustrated, application 400 may employ operating system 134, or 212 to generate user interface 406 via one or more application programming interfaces 403. In accordance with one embodiment of the present invention, when the user changes the business process the change is detected by a process change detection component 420. Detection component 420 determines the change made to the process and also determines what user interfaces and elements of the user interface should be modified, created or assembled as a result of the change.
Process change detection component 420 accesses user interface modification resource 430. Resource 430 may take any suitable form, including an Extensible Markup Language (XML) file, a database entry, or any other suitable data structures. Resource 430 includes information relative to one or more modifications to be made to the original user interface specification 402 as a result of the change. Resource 430 illustratively includes specific information relative to individual user interface elements and their associated properties and the values of those properties. Only user interface elements that are modifiable or assembled are generally specified in resource 430. Accordingly, the modifications detected by component 420 will apply to specific user interface elements specified in resource 430 and are modified by the user interface resource 430. Accordingly, these changes are made at run-time without requiring application 400 to be re-compiled. Further, any property or value of any element of user interface 406 can be modified by placing such modification in resource 430.
At block 506 the changes to the business process are detected. In one embodiment the change is detected by the process change detection component 420 of
At step 510 the program determines if a new user interface is needed or if the existing user interfaces are to be modified based on the information obtained at step 506. If a new user interface is needed the program generates a new user interface for the added step at step 512. In alternative embodiments the user interface can be obtained from the database of interface 450. To generate the new user interface, the program first accesses a datastore, such as database 450, containing at least one default user interface element. However, the database may contain multiple default user interfaces, where each type of step that may be added to the process has its own unique user interface. If the program determines that one or more existing user interfaces are to be modified in response to the change in the process the program modifies the user interface at step 514. This is discussed in greater detail below.
When generating a new user interface, at step 512, the program accesses a user interface generation resource, such as resource 430 in
Once the user interface has been generated for the new step, it is stored in the user interface resource. Then the program checks the remaining user interfaces in the process to determine whether any of them need to be modified to account for the newly added step in the process. This is illustrated at step 513. If any of the user interfaces are to be changed the program follows the path through the flow chart to step 514. However, prior to advancing to step 514, the program stores the newly generated user interface in the user interface specification 402. This is illustrated at step 515. If there is no change required to other user interfaces, the program stores the user interface at step 515.
At step 514 process change detection component 420 attempts to access a user interface modification resource, such as resource 430. Within step 514, it is important for process change detection component 420 to know the location of resource 430. In one embodiment, the location of resource 430, whether it is located on the local machine, or across a network, is hard-coded into process change detection component 420 or application 400. However, other embodiments of the invention include presenting the user with a choice of possible locations, or even allowing the user to enter the location information.
The loaded modification resource 430 is parsed to generate a hash table that allows lookup of a user interface element and its associated metadata. Once the hash table has been generated, the program moves to the first or top element in resource 430. In one embodiment, resource 430 lists the user interface modifications in a hierarchical manner such that the first element within resource 430 is also the parent of all elements therein. However, many other variations of storage formats within resource 430, and many other processing regimes can be used. Next, the hash table is consulted to lookup any metadata in the hash table for the element at the top of the chain. A data structure, illustratively, provides the relevant information for that particular user interface element. Next the program determines based on the information obtained at step 508 what elements in the user interface are to be modified based on the changes made to the process.
Once the information has been obtained from the lookup table, customization is applied to the appropriate user interface element. A more detailed description of the application of a customization is described below with respect to
The ability to query the code provides an important advantage to embodiments of the present invention. Specifically, it allows the application to understand the nature of the user interface code itself. The user interface modification resource 430 uses the metadata API to query the user interface code to determine, for example, the data type of a user interface element being modified by the change in the business process or the new user interface. Then, the associated modification information can be typecast into the appropriate form to directly modify the user interface element without generating an error. Thus, a user interface modification specification 430 written entirely in textual data can modify any suitable types of user interface elements with the textual data being type-cast, as appropriate, as the user interface element is modified. Thus, at step 820, depending on the results of the user interface code query of step 810, the modification information relative to the user interface element is adjusted.
At step 830, the adjusted modification information is applied to the user interface code. In some embodiments, the customization of a user interface element may change the layout or size of that particular user interface element. This layout change may then interfere with one or more other elements in the user interface.
In accordance with embodiments of the present invention, once the adjusted modification information is applied as described with respect to step 830, the effect of the modification is actually measured, or otherwise obtained, as illustrated in optional step 840. For example, if the text of a control is added or otherwise modified such as a button or related tasks, the actual length of the text will likely require the physical control, such as the related tasks section, to become larger as well. The larger button may then not align properly with other controls, or it may even overlap other controls.
If the modification will not impact the user element layout, control passes along line 850 and step 514 ends. However, if the layout will be impacted, control passes along 855 to step 860 where the actual layout of the user interface is adjusted to accommodate the re-sized modification UI element. This accommodation can take the form of simply moving one or more elements that may otherwise interfere with the adjusted UI element. However, adjusting the layout to accommodate the re-sized user interface element can also include adjusting other elements to align them with the re-sized element. Additionally, another aspect of user interface element modification includes the ability to allow resource 430 to specify a completely new location on the user interface for a modified element.
Once the process of step 514 is completed, the modified user interface element is stored in the user interface specification at step 516. At this step the old user interface may also be saved as a back-up version in the event that other difficulties are discovered with the new user interface, or to return to if the process is returned later to the original state.
Although the present invention has been described with reference to particular embodiments, workers skilled in the art will recognize that changes may be made in form and detail without departing from the spirit and scope of the invention.