The present invention relates generally to distributed mobile applications, and in particular, to a system and method of application provisioning.
Enterprises may have many mobile devices. Each mobile device comprises application software that is updated from time to time. If a new version of an application is created, the application may be updated on each mobile device of the enterprise by physically transporting each mobile device to a central location to be updated. Alternatively, a memory card may be sent to users of mobile devices containing the application upgrade to be installed on the mobile devices. Alternatively, the device may be managed from a personal computer software updates.
There are a number of application provisioning systems by multiple vendors. Each system requires a user to update the applications. This is onerous for the enterprise to manage.
The present invention relates to distributed mobile applications where data collection can take place in environments with and without radio (or other telecommunication) coverage. It is an object of the invention to provide a system and method of application provisioning.
In accordance with an embodiment of the invention, there is provided an application provisioning system and for administering and delivering software applications to client devices. The application provisioning system comprises a repository for storing a component package and maintaining a mobile device application profile, a component manager web service module for sending the component package to a mobile device, and a component manager client module for receiving and processing the component package.
In accordance with another embodiment of the invention, there is provided a method of administering and delivering software applications to client devices. The method comprises the steps of receiving a request for a client device application profile, obtaining a first component package that includes the client application profile, sending the first component package to the client device, and processing the first component package.
Advantageously, the application provisioning system provides a centrally managed application assignment that is transparent to the user. A client component downloads what applications are required automatically. Preferably, web services is used for client to server communication (open standard).
This summary of the invention does not necessarily describe all features of the invention.
These and other features of the invention will become more apparent from the following description in which reference is made to the appended drawings wherein:
The following description is of a preferred embodiment.
The present invention will be further illustrated in the following examples.
An application console may be installed as client application 202 on the mobile client component 102 to provide a presentation layer and application framework that end users use to collect, review and modify data. The application console communicates with the server component 104 via web services running on the IIS 206. The server component 104 is a middle tier where data is synchronized before being sent to the back-end system 108.
The server component 104 provides the applications and connectivity options to integrate back-end systems 108. A unified administration console for administering middleware on may be installed as a server application 206 to provide a single source for system management and monitoring and can be used remotely. Advantageously, the unified administrative console simplifies multi-site, multi-device management and deployment. This allows for ease of deployment and controlled rollouts. Host interconnect modules 210 provide the information and logic used to integrate with the back-end systems 108.
Back-end systems 108, whether databases or full-featured enterprise resource planning (ERP) systems, are supported via the host interconnect modules 210 installed on the server component 104. Standard interface technologies are supported, including extensible markup language (XML) and open database connectivity (ODBC), as well as ERP-specific interfaces.
Preferably, the mobile device 102 topology is centrally administered on the server 104. During administration, the workstation 102 (device or personal computer) is assigned to a site, which is a logical geographical unit (e.g., a warehouse). A site can have many workstations. When the application for the workstation is developed it is inserted into the repository 304 of components. Then the particular version of the application is assigned to the workstation. There is also another logical unit called Group. Group unlike the site is more logical then geographical, e.g., picking. Workstations can be assigned from multiple sites to a group if those workstations are used for the same type of work. Then the application can be assigned to the group and it will get distributed to all workstations in that group (across multiple sites). Advantageously, the same application does not need to be assigned to every single workstation. Groups are further described below.
A group is a logical grouping of workstations (e.g., by task). A version of a component can be assigned to the workstation directly or to the group. A component can have multiple versions. Preferably, each component has a collection of install and uninstall commands.
Preferably, users are also created on a per-site basis to ensure users work in the areas to which they are assigned. As the number and type of tasks each workstation user does can vary, it may be desirable to limit which users can perform the tasks. Users may be assigned roles, tokens and dynamic properties, which the application (device-based) or web method (server-based) validates to decide how the user or process may proceed. Provisioning is open to all users. An application (e.g., Picking) can take advantage of roles, tokens, users and dynamic properties.
The client 202 contacts the server 204 upon start-up and synchronizes the assigned application. Upon start-up of the client 202, the component manager client module 308 is invoked and communicates with the component manager web service module 306 to determine what components are assigned to the workstation 102 upon which the client 202 is located. The service 306 returns the list of components that are assigned to the workstation 102 directly and indirectly through the group. The client 202 then checks a local repository 302 to see what components it already has installed to determine what new components to download and install. If there is a component installed on the client and that component (by version) does not appear in the list of components supplied by the service 306, such component will be uninstalled (using uninstall commands).
Preferably, the component manager client 308 synchronizes the workstation components before logging-on to the client. That way the server can send the user database to the client. For example, if a user who worked in a first warehouse was let go by an organization, any interaction the user has with a mobile device is undesirable for the organization. Advantageously, the application provisioning system 300, 600 prevents any damage to the organization by having the device download a new user database (before login) and then asking the user to login. Provided that the component manager administration module 602 had been notified about the change in the user's relationship with the employer, the user is no longer able to login.
If there is a previous version of the application installed (726), then the component manager client module 308 uninstalls the previous version of the application (728) in the mobile client 202. The received version is installed (730) in the mobile client 202 and the device profile entry for this application is updated to match the corresponding application profile entry (732). Preferably, instructions have been sent earlier with the application profile, such that only the version of the application (preferably its binary is downloaded per request). Alternatively, instructions may be sent along with an application binary. Once the device profile is updated (732) and there are more applications listed in application profile (734), then steps (712) to (732) are repeated until all the applications listed in the application profile are updated in the device.
For each application present in the device profile that is not present in the application profile (734), the component manager client module 308 uninstalls the application (728) from the mobile client 202 and updates the device profile entry for that application to match the corresponding application profile entry (732). Alternatively, an application may be disabled rather than uninstalled. Steps (734) to (732) are repeated until there are no more applications to uninstall from the client. Other steps may be added to the method (700) and/or processing step (408), including reporting the state of the mobile workers and if any devices or users had problems synchronizing, and sending a notification to a mobile client user that a device is up-to-date.
Advantageously, as an administrator operating on the server 104 determines the distribution of the components on the server 104, the client component 102 is only required to download any new components and install them as needed. Advantageously, the application provisioning system 300, 600 provides a centrally managed application assignment that is transparent to the user. A client component 102 downloads what applications are required automatically. Thus, a user is not prompted to download and install/uninstall the applications. The applications assigned to the workstation (or mobile client) 102 are decided by the central administrator. Preferably, web services is used for client to server communication (open standard).
The application provisioning system and method according to the present invention may be implemented by any hardware, software or a combination of hardware and software having the above described functions. The software code, either in its entirety or a part thereof, may be stored in a computer readable memory. Further, a computer data signal representing the software code which may be embedded in a carrier wave may be transmitted via a communication network. Such a computer readable memory and a computer data signal are also within the scope of the present invention, as well as the hardware, software and the combination thereof.
While particular embodiments of the present invention have been shown and described, changes and modifications may be made to such embodiments without departing from the true scope of the invention.