SYSTEMS AND METHODS FOR BUILDING AND DEPLOYING MOBILE APPLICATIONS
Systems and methods may generate applications for operating platforms. A data source for an application definition may be created, and an object may be mapped to the data source. An application definition may be generated from the data source and object. An operating platform for application publication may be selected from among a plurality of platforms. An application may be generated for the selected operating platform.
This application is a Continuation of U.S. application Ser. No. 13/767,433 filed Feb. 14, 2013. U.S. application Ser. No. 13/767,433 claims priority from U.S. Provisional Application No. 61/618,157, entitled “System and Method for Building and Deploying Web-Based Mobile Applications Across Multiple Mobile Platforms From a Single Application Definition,” filed Mar. 30, 2012. The entirety of both of the above-listed Applications are incorporated herein by reference.
BRIEF DESCRIPTION OF THE DRAWINGSA mobile application development platform may enable mobile application development by using an interface, for example a web browser-based interface, to assemble and generate applications that may run on multiple mobile operating systems and/or mobile web browsers, from a single application definition which may include mappings between user interface pages and components, objects, extensions, and/or data sources. One example of a mobile application that can be developed by the platform is an application that displays projects and their corresponding tasks and team members. The platform can be used to define the data sources, such as a database or a non-mobile third-party application, from which the project management app may read and write data. The platform can be used to define the objects and relationships with the application, such as projects, tasks, and team members, where tasks and team members objects can belong to a project object. Finally, the platform can be used to specify how the user interface should display the objects and enable users to interact with the object data. The platform can be used to generate the project management application for multiple mobile operating systems. For example, the platform can generate source code that is designed to run on Apple iOS devices. In this case, the source code may include an Apple XCode project and corresponding libraries, using a language called Objective-C. This iOS mobile app may be compiled and can be installed and executed on supported iOS devices. The same project management application can be generated to run as a mobile web application running in mobile web browsers. In this case, the platform may also generate source code and corresponding libraries in Javascript, Cascading Style Sheets (CSS), and HTML. This mobile web application can be hosted on a web server and may be accessed via any mobile device via a browser. Other examples and options may be possible, some of which are described in greater detail below.
Systems and methods described herein may enable application designers to preview an application by downloading automatically generated files for use within a web browser and/or on a mobile device. In some embodiments this may be done without manual software compilation steps or installation of mobile operating system-specific software development kits on the application designer's computing device.
Systems and methods described herein may enable developers to add or change functionality of a mobile application by invoking external custom web services, stored procedures, and/or by installing extensions within an application. When installed, these extensions may automatically create additional application definition items such as user interface pages and components, objects, extensions, and/or data sources.
Systems and methods described herein may generate a run-time server application that may communicate with a client-side mobile application to provide supporting functions such as data storage, data integration with source systems, and/or business logic extensions. This run-time server application may be automatically installed on web servers provided by a third party, or may be saved to a third party source code repository from which authorized users can download and install the run-time server application on their own server infrastructure.
The platform may generate run-time source code components that may comprise a fully functional mobile application. For example, the platform may generate: (1) backend server code and programming interfaces, (2) client-side library (SDK) code for accessing the backend server interfaces, and (3) client-side user interface (UI) code. Specifically, in various embodiments, the backend server component may support Ruby on Rails and/or Java Play language frameworks, the SDK component may support Backbone.js, Sencha Touch, iOS, and/or Android language frameworks, and/or the client-side UI component may support jQuery Mobile, iOS, and/or android language frameworks. The client-side SDK code may also include automatically generated documentation that may provide detailed specifications of the available function calls and parameters.
Devices operating the various applications and performing the various processes described herein may comprise one or more computers. Computers may be linked to one another via a network or networks. A computer may be any programmable machine capable of performing arithmetic and/or logical operations. In some embodiments, computers may comprise processors, memories, data storage devices, and/or other commonly known or novel components. These components may be connected physically or through network or wireless links. Computers may also comprise software which may direct the operations of the aforementioned components. Computers may be referred to with terms that are commonly used by those of ordinary skill in the relevant arts, such as servers, PCs, mobile devices, and other terms. It will be understood by those of ordinary skill that those terms used herein are interchangeable, and any computer capable of performing the described functions may be used. For example, though the term “server” may appear in the following specification, the disclosed embodiments are not limited to servers. A network may be any plurality of completely or partially interconnected computers wherein some or all of the computers are able to communicate with one another. It will be understood by those of ordinary skill that connections between computers may be wired in some cases (i.e. via Ethernet, coaxial, optical, or other wired connection) or may be wireless (i.e. via WiFi, WiMax, or other wireless connection). Connections between computers may use any protocols, including connection oriented protocols such as TCP or connectionless protocols such as UDP. Any connection through which at least two computers may exchange data can be the basis of a network.
Referring to
Referring again to
Although the process for editing application definition metadata may be non-linear, the user may follow a predetermined process to create and/or edit the application definition, as described in further detail in
The process of creating and/or editing the application definition may include creating data sources. Data sources may be locations from which data may be retrieved and/or to which data may be saved by a mobile application. Mobile applications designed for businesses may store and edit information that is contained in a third party application such as an enterprise resource planning (ERP) solution or a customer relationship management (CRM) solution. Examples of data that may be edited or displayed within a typical business mobile application include customers, orders, invoices, and/or activities. In some cases, the mobile application may store or edit data from multiple data sources. As illustrated in
Referring again to
An object may optionally be flagged as an authenticatable object with corresponding fields identified that may determine how an individual user of the application may be identified (for example, authentication lookup fields, such as name or email ID), how the user may be authenticated (for example, an authentication match field, such as a password), and/or what role(s) may be assigned to the user (for example, an authorization role field). For example, the authentication object may be mapped to a data source containing user information such as name, password, and/or roles. If at least one authenticatable object exists, then other objects may have authorization rules that may determine which user roles may have access to the object. One or more authorization rules may be defined at the object level, and may specify whether the role can perform operations on specified object field data. These operations may include, for example, reading, writing, creating, updating, and/or deleting data. If no authorization rules exist on an object, which may be true by default in some examples, then all users and roles may have access to perform any operation on the object.
An example of an object and fields representing employee data may be as follows:
In this example, the object metadata fields are as follows:
application-definition-id: a unique identifier for the application
code-friendly-name: the name of the object to be referred to in any code
composite-key-delimiter: character used to build composite keys
created-at: the date when the object for created
default-sort-field: the default field used to sort instances of the object
default-sort-order: the default sort order of the object instances
display-friendly-name: the name of the object to be displayed in the designer
downcase-lookup-field: used when the object is intended for lookup purposes
has-secure-password: used when the object is for authentication
id: unique identifier for the object
lookup: used when the object is intended for lookup purposes
mapping: name of data source component that the object is mapped to
name: human-readable name of the object
role-field: used for access control purposes
slug: the URL-friendly name of the object
storage-interface-id: the identifier of the data source that the object is mapped to
updated-at: the date the object definition was last updated
And the field metadata fields are as follows:
field-definition: the start of each field definition and its properties
auto: whether the field is auto created
created-at: date the field was created
display-friendly-name: the name of the field to be displayed in the designer
field-type: the data type of the field (i.e. integer, boolean, string, etc.)
file-type: whether the field corresponds to a media file (i.e. picture, audio, etc.)
file-url: the location of the file if the field corresponds to a media file
id: unique identifier for the field
key: whether the field is part of the key for the object
mapping: the name of the data source element that the field maps to
name: the human-readable name of the field
object-definition-id: the unique identifier of the object that the field belongs to
required: whether the field is required
Referring again to
Referring again to
If a user desires further customization of business logic related to extensions or in response to an object event, they may choose to develop custom code at the object model or controller level or invoke a custom web service that was developed outside the platform 220. The web service may be built in any programming language that is able to produce web services based on the Representational State Transfer (REST) model. Custom code may be written within the object's lifecycle events at the controller (before and after requests) and model level using functions such as create update, save, and/or delete. Authoring custom code in this manner may be useful, for example, for implementing custom validation, business logic, pre and post processing requests, default values, and/or invoking extensions. To invoke a custom web service from the application, the user may install a generic web service extension or author custom code that invokes the web service using RESTful protocol, for example.
Referring again to
An example hierarchy of UI elements is illustrated in
Referring to
Referring again to
Referring again to
Referring again to
The platform may enable application designers to assemble and deploy mobile applications across multiple mobile operating systems and platforms from a single application metadata definition edited within a web-based graphical user interface. Further, the application may provide mobile-enabled access to data, or subsets thereof, from multiple different data sources, and may include a granular user access system to control permissions at the data field level. Further, the application functionality may be expanded by installing extensions or via event-triggered custom code. Further, the platform may obviate the need for any installation of software development environments by automatically compiling native applications on appropriate web-based servers. Further, the platform may generate a self-contained run-time application server that can be further customized by developers and hosted on server infrastructure chosen by the customer. Further, both the design-time services and run-time services may be accessed programmatically by authorized third-party applications to facilitate data integration or automated mobile application generation.
While various embodiments have been described above, it should be understood that they have been presented by way of example and not limitation. It will be apparent to persons skilled in the relevant art(s) that various changes in form and detail can be made therein without departing from the spirit and scope. In fact, after reading the above description, it will be apparent to one skilled in the relevant art(s) how to implement alternative embodiments. Thus, the present embodiments should not be limited by any of the above-described embodiments
In addition, it should be understood that any figures which highlight the functionality and advantages are presented for example purposes only. The disclosed methodology and system are each sufficiently flexible and configurable such that they may be utilized in ways other than that shown.
Although the term “at least one” may often be used in the specification, claims and drawings, the terms “a”, “an”, “the”, “said”, etc. also signify “at least one” or “the at least one” in the specification, claims and drawings.
Finally, it is the applicant's intent that only claims that include the express language “means for” or “step for” be interpreted under 35 U.S.C. 112, paragraph 6. Claims that do not expressly include the phrase “means for” or “step for” are not to be interpreted under 35 U.S.C. 112, paragraph 6.
Claims
1. A method comprising:
- receiving, with a design module running on a processor in communication with a database, data comprising a design for an application definition from a remote computer via a network, the application definition describing a function of an application;
- creating, with a design-time interface of the design module, a data source for the application definition, the data source comprising a definition of a location from which data can be retrieved by the application and/or to which data can be saved by the application;
- mapping, with the design-time interface of the design module, an object to the data source;
- receiving, with the design module, a selection of one or more client operating platforms for application publication from among a plurality of platforms from the remote computer via the network;
- generating, with at least one generator module, source code for the application including source code for a client application component native to each of the selected one or more client operating platforms using the application definition; and
- sending, with the design module, the source code for the application to the remote computer.
2. The method of claim 1, further comprising:
- sending to the remote computer via the network, with the processor, data enabling a display associated with the remote computer to display template information associated with a template; and
- wherein the receiving of the data comprising the design for the application definition comprises receiving data placed in the template.
3. The method of claim 1, further comprising storing, with the processor, the application definition in the database.
4. The method of claim 3, further comprising:
- retrieving, with the processor, the stored application definition from the database;
- receiving, with the processor, data associated with a change to the retrieved application definition; and
- modifying, with the processor, the retrieved application definition by incorporating the received data into the retrieved application definition.
5. The method of claim 3, further comprising:
- generating, with the remote computer, the data associated with the change to the retrieved application definition; and
- sending, with the remote computer, the data associated with the change to the retrieved application definition to the processor via the network.
6. The method of claim 1, further comprising storing the source code for the application in the database.
7. The method of claim 1, further comprising:
- generating, with the at least one generator module, a preview application for each of the selected one or more client operating platforms from the application definition; and
- sending to the remote computer via the network data enabling a display associated with the remote computer to display the preview application.
8. The method of claim 1, further comprising:
- receiving, with the processor, data associated with a third-party application;
- integrating, with the processor, the data associated with the third-party application into the application definition.
9. The method of claim 1, wherein the generating of the source code for the application comprises installing an extension, generating custom logic, and/or assembling a user interface.
10. The method of claim 1, wherein the generating of the application comprises generating libraries.
11. The method of claim 1, wherein the location defined by the data source comprises a database, a web service, and/or a software application.
12. The method of claim 1, wherein the generating of the source code for the application comprises:
- incorporating pre-built code into the source code for the application;
- receiving custom code from the remote computer and incorporating the custom code into the source code for the application; or
- a combination thereof.
13. The method of claim 1, further comprising:
- generating, with the remote computer, the data comprising the design for the application definition; and
- sending, with the remote computer, the data comprising the design for the application definition to the processor via the network.
14. The method of claim 1, further comprising compiling, with the least one generator module, the source code for the application to generate the application.
15. The method of claim 14, further comprising sending, with the design module, the application to the remote computer.
16. The method of claim 14, further comprising storing the application in the database.
17. The method of claim 1, wherein the generated source code is uncompiled source code.
18. The method of claim 1, wherein the generated source code includes source code for a run-time services component employed by all of the selected one or more client operating platforms.
19. The method of claim 18, wherein:
- the client application component is configured to be executed by a client; and
- the run-time services component is configured to be executed by a server in communication with the client.
20. The method of claim 1, wherein the application for each of the selected one or more client operating platforms is independent of the design module.
21. A system comprising:
- a database;
- a processor in communication with the database, the processor constructed and arranged to: receive data comprising a design for an application definition from a remote computer via a network, the application definition describing a function of an application; create, with a design-time interface, a data source for the application definition, the data source comprising a definition of a location from which data can be retrieved by the application and/or to which data can be saved by the application; map, with the design-time interface, an object to the data source; generate, with the design-time interface, an application definition from the data source and object; and receive a selection of one or more client operating platforms for application publication from among a plurality of platforms from the remote computer via the network; and
- at least one generator module, running on the processor or another processor constructed and arranged to generate source code for the application including source code for a client application component native to each of the selected one or more client operating platforms using the application definition;
- wherein the processor is further constructed and arranged to send the source code for the application to the remote computer.
22. The system of claim 21, wherein:
- the processor is further constructed and arranged to send, to the remote computer via the network, data enabling a display associated with the remote computer to display template information associated with a template; and
- wherein the processor receives data placed in the template.
23. The system of claim 21, wherein the processor is further constructed and arranged to store the application definition in the database.
24. The system of claim 20, wherein the processor is further constructed and arranged to:
- retrieve the stored application definition from the database;
- receive data associated with a change to the retrieved application definition; and
- modify the retrieved application definition by incorporating the received data into the retrieved application definition.
25. The system of claim 20, wherein the remote computer is constructed and arranged to:
- generate the data associated with the change to the retrieved application definition; and
- send the data associated with the change to the retrieved application definition to the processor via the network.
26. The system of claim 21, wherein the at least one generator module is further constructed and arranged to store the source code for the application in the database.
27. The system of claim 21, wherein the at least one generator module is further constructed and arranged to:
- generate a preview application for each of the selected one or more client operating platforms from the application definition; and
- send, to the remote computer via the network, data enabling a display associated with the remote computer to display the preview application.
28. The system of claim 21, wherein the processor is further constructed and arranged to:
- receive data associated with a third-party application;
- integrate the data associated with the third-party application into the application design.
29. The system of claim 21, wherein the at least one generator module installs an extension, generates custom logic, and/or assembles a user interface.
30. The system of claim 21, wherein the generating of the application comprises generating libraries.
31. The system of claim 21, wherein the location defined by the data source comprises a database, a web service, and/or a software application.
32. The system of claim 21, wherein the generating of the application comprises:
- incorporating pre-built code into the source code for the application;
- receiving custom code from the remote computer and incorporating the custom code into the source code for the application; or
- a combination thereof.
33. The system of claim 21, wherein the remote computer is constructed and arranged to:
- generate the data for the application definition; and
- send the data for the application definition to the processor via the network.
34. The system of claim 21, wherein the at least one generator module is further constructed and arranged to compile the source code for the application to generate the application.
35. The system of claim 34, wherein the processor is further constructed and arranged to send the application to the remote computer.
36. The system of claim 34, wherein the at least one generator module is further constructed and arranged to store the application in the database.
37. The system of claim 34, wherein the generated source code is uncompiled source code.
38. The system of claim 34, wherein the generated source code includes source code for a run-time services component employed by all of the selected one or more client operating platforms.
39. The system of claim 38, wherein:
- the client application component is configured to be executed by a client; and
- the run-time services component is configured to be executed by a server in communication with the client.
40. The system of claim 34, wherein the application for each of the selected one or more client operating platforms is independent of the design module.
Type: Application
Filed: Feb 23, 2015
Publication Date: Jun 18, 2015
Inventors: Jeff BOZEK (Reston, VA), Richard MENDIS (Herndon, VA), Rakesh RAO (Reston, VA), Ian TERRELL (Berkeley, CA)
Application Number: 14/629,346