US20150169293A1 - Systems and methods for building and deploying mobile applications - Google Patents
Systems and methods for building and deploying mobile applications Download PDFInfo
- Publication number
- US20150169293A1 US20150169293A1 US14/629,346 US201514629346A US2015169293A1 US 20150169293 A1 US20150169293 A1 US 20150169293A1 US 201514629346 A US201514629346 A US 201514629346A US 2015169293 A1 US2015169293 A1 US 2015169293A1
- Authority
- US
- United States
- Prior art keywords
- application
- data
- definition
- remote computer
- processor
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W4/00—Services specially adapted for wireless communication networks; Facilities therefor
- H04W4/50—Service provisioning or reconfiguring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/35—Creation or generation of source code model driven
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- H04L67/42—
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W4/00—Services specially adapted for wireless communication networks; Facilities therefor
- H04W4/60—Subscription-based services using application servers or record carriers, e.g. SIM application toolkits
Definitions
- FIG. 1 is an example flow chart of a mobile application creation and deployment process according to an embodiment of the invention.
- FIG. 2 is an example flow chart of a process for editing a definition of a mobile application according to an embodiment of the invention.
- FIG. 3 is an example illustration of architectural components according to an embodiment of the invention.
- FIG. 4 is an example hierarchy of user interface pages and components that define a mobile application according to an embodiment of the invention.
- FIG. 5 is an example block diagram of data sources, objects, user interface (UI) components, and extensions that comprise an application definition according to an embodiment of the invention.
- UI user interface
- FIG. 6 is an example of a set of extensions and application definitions according to an embodiment of the invention.
- FIG. 7 is an example of components and flow involved during a preview or publishing operation of a mobile application according to an embodiment of the invention.
- FIG. 8 is an example of infrastructure components and network communication paths according to an embodiment of the invention.
- a 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.
- 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.
- 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.
- the platform can generate source code that is designed to run on Apple iOS devices.
- 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.
- 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.
- 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.
- 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
- 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.
- Computers 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.
- 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.
- 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.
- a platform may provide systems and/or enable methods for building and deploying mobile applications across one or more mobile operating systems.
- Users may log in to an application designer 100 , which may also be referred to as a development environment, via a web browser with Internet connectivity and/or via some other user interface. If a new mobile application is being created, the user may enter a name for the application 102 , and may optionally select a template 104 with pre-assembled functionality.
- the platform may provide access to a plurality of mobile application templates that may be used to reduce development time and/or complexity. Users may also publish new templates that may be made available for selection. In some embodiments, only authorized system administrators of the platform and/or other qualified users may be permitted to publish new templates.
- the new application definition may be populated with data sources, objects, extensions, and/or user interface element metadata with relationship mappings that may describe how an application should behave when running.
- a template may include a pre-defined mobile application for employees to perform common human resources related tasks or requests such as view other employees in a company directory, view news about the company, and/or view personal compensation information.
- an application may automatically be created and populated with a series of objects representing entities such as employees, news items, and compensation.
- the template may automatically generate user interface components mapped to these objects, such as a home page with new items and tool bar buttons, a company directory list page, and a total compensation list page with chart components.
- the user may be able to select an existing application 106 that was previously created.
- the user may be presented with a graphical interface that may allow for visual editing of the application definition 110 .
- they may preview the application 112 . If the user is dissatisfied with the preview, the user may continue editing 110 . If the user is satisfied with the preview, the user may publish the application 114 .
- the application may also be submitted to a relevant app store 116 (e.g., an Apple or Google store), based on whether the user desires to distribute the app via a public app store.
- the published application may be submitted to the relevant app store 116 if it is a native application designed to run specifically on an OS associated with the relevant app store (e.g., iOS app to the Apple store and/or Android app to the Google store), for example.
- Published applications may also be distributed in other ways. For example, some applications, such as HTML5 mobile applications, may be deployed to users via an Internet URL address and may not require a third party distribution channel.
- the user may want to update the app with new functionality, at which point they may restart the process described in FIG. 1 .
- the applications may be re-compiled and re-distributed to end-users via the original channel. There may be end users who delay installing updates to the application, and older versions of server-side APIs may be maintained so that previous versions of native apps will continue to function.
- 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 FIG. 2 .
- 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.
- the mobile application may store or edit data from multiple data sources. As illustrated in FIG.
- data sources 506 may be linked via storage connectors 504 to databases, web services, and/or software applications 502 such as, but not limited to, MySQL, Postgress, REST or SOAP web services, Oracle e-Business Suite, SAP ERP, and/or Salesforce.com.
- Storage connectors 504 may be pre-built adapters which may connect to a specific database, web service, and/or software application. For example, to create a data source 506 that is connected to an external MySQL database, a user may employ a MySQL storage connector.
- the platform may also provide a storage connector 504 to a built-in database, which may be used to save or retrieve data without having to connect to an external data source. Further, users may be able to publish such new storage connectors 504 .
- the data sources 506 may include and/or be associated with various objects 508 , fields 510 , events 512 , extensions 514 , custom or third-party web services 516 , UI components 518 , and/or UI sub-components or properties 520 .
- FIG. 5 further illustrates the relationships between the metadata entities and their children.
- Data sources 506 may contain fields or data elements which may be mapped to corresponding fields 510 within an object 508 .
- the object 508 may include lifecycle events 512 based on operations such as create, update, save, and/or delete, which can invoke custom code 515 or extensions 514 that may correspond to custom or third party web services. 516 .
- objects 508 may be mapped to UI components 518 which may expose data within UI component properties 520 that may be mapped to object fields 510 .
- editing an application definition may begin with the creation of one or more data sources 200 .
- objects may be created and mapped to the data sources 202 .
- objects 508 may contain fields 510 that may be mapped to corresponding fields on the object's data source.
- Each object may be mapped to one data source, and each field within an object may be mapped to a single field on a data source.
- An object may be an abstract representation of a major data element from the data source. For example, if the data source is a customer relationship management (CRM) system, and one of the data elements in the CRM system is customer, an object called “customer” may be mapped to the CRM data source's customer element.
- CRM customer relationship management
- the mapping between an object and data source may be one-to-one.
- An application may have multiple objects that may be mapped to different data sources.
- Optional query scopes may be defined at the object level. The query scopes may serve to retrieve a subset of data from the data source based on matching field value operations and/or sort orders. Further, a query scope may apply additional rules to filter the data based on the current end-user's attributes, such as, but not limited to, country, language, and/or time zone. This query scope may be referenced when defining user interface elements to enable end-users of a mobile application to interact with specific subsets of data.
- 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).
- the authentication object may be mapped to a data source containing user information such as name, password, and/or roles.
- 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.
- 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
- default-sort-field the default field used to sort instances of the object
- has-secure-password used when the object is for authentication
- lookup used when the object is intended for lookup purposes
- mapping name of data source component that the object is mapped to
- role-field used for access control purposes
- storage-interface-id the identifier of the data source that the object is mapped to
- 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
- mapping the name of the data source element that the field maps to
- object-definition-id the unique identifier of the object that the field belongs to
- extensions 210 may be installed to expand the functionality of the application.
- An example is an extension that sends Short Message Services (SMS) text messages.
- Another example is an extension that sends push notifications to native applications via Apple's Push Notification service (APN) or Google's Cloud Messaging for Android (GCM).
- extensions 602 may be developed by different parties and may be registered by a user, such as an authorized system administrator, within the platform to become available for use by application designers.
- extensions may be provided by a platform administrator 604 and/or by a third party 606 .
- the application designer may be able to install one or more extensions within one or more applications 608 , 610 .
- an extension When an extension is installed within an application, it may automatically insert application metadata that may include one or more data sources, objects, extension code, and/or user interface elements.
- the user may map the extension-generated metadata 214 to other data sources, objects, and/or custom code within the application definition.
- the extension may expose configuration settings 212 that the user may edit from within the designer user interface. These settings may be extension-specific, and may vary based on the selected extension and any supporting third party services. For example, settings for a push notification extension may include the certificates required by Apple or Google to utilize their messaging delivery services.
- extensions developed by a network and/or system operator 810 may be executed on network and/or system operator managed servers 814 , and may interact with web-based third party services 812 . Extensions may also be developed and hosted by customers or partners of the operator, within their own managed infrastructure 824 , which may also interact with web-based third party services 812 .
- 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.
- FIG. 5 illustrates an example mapping between object events 512 , extensions 514 , custom code 515 , and the corresponding custom or third party web service 516 .
- An example use of a custom web service could be to update an external system when a user creates a new object instance in a preexisting application.
- An example use of a third-party service could be to update usage information in a third-party analytics solution in response to user operations within a preexisting application.
- the platform may allow a user to assemble the user interface of the application by using page and component elements 226 .
- These user interface components may be visual elements of the application such a list of records with a search button, a form with data entry fields and a submit button, and/or an interactive map of the user's current location.
- the platform may internally store the user interface (UI) elements, including pages and components, in a hierarchical structure. In the hierarchical structure, the relationship of a UI element to its parent and children, and the attribute values (or properties) of the element, may determine how the UI element will be rendered when the app is running in the client device environment.
- UI component properties may vary based on the type of component.
- a button component may have properties that control appearance such as name, width, border radius, background color, and/or font style.
- a list page component may have properties that determine what data to display, such as object query scope, row header, row body, and/or items per page.
- FIG. 5 illustrates an example mapping between objects 508 and UI components 518 , and between object fields 510 and component properties 520 .
- a content page 400 may contain a list component 402 and a button component 404 .
- the list component 402 may render a list of data records based on the object to which the component is mapped. Each record in the list may be displayed according to the list item component 408 , which in this example is an image component 410 followed by a label component 412 .
- the button component 404 may enable the end-user to create a new record, and may display a new record form page 406 to allow for input of the new record data.
- the detail page 414 may display data from an individual record that the end-user may select in the list component 402 .
- the record data may be displayed on the detail page using an image component 416 and one or more styled text components 420 .
- an employee services application may contain a list page called “employee directory” that may be mapped to the employee object's “all” query scope to display all records.
- the row header property of the list page may display the employee object fields first name and last name.
- the row body property may display the employee object field title and department. This may result in a list page in a mobile application that displays all employees in a list, with the employee first name, last name, title, and department in each row of the list.
- the platform may allow a user to specify general application settings 230 such as, but not limited to, which mobile operating systems may be supported and/or general appearance properties such as color theme and/or icon. If the application is to be generated as a native mobile application, then additional settings 232 , such as, but not limited to, ad-hoc provisioning files, private keys, and/or developer certificates, may be specified or uploaded to enable the application to be compiled as a native application on selected mobile operating systems.
- general application settings 230 such as, but not limited to, which mobile operating systems may be supported and/or general appearance properties such as color theme and/or icon.
- additional settings 232 such as, but not limited to, ad-hoc provisioning files, private keys, and/or developer certificates, may be specified or uploaded to enable the application to be compiled as a native application on selected mobile operating systems.
- the platform may allow a user to preview the application 112 based on the current application metadata definitions. Previews may be available for any mobile operating systems that the application may be targeted to support as specified in its general application settings. As illustrated in FIG. 7 , the application designer may, for example, click a preview button within a designer user interface 702 , which may be a browser-based interface. The user may be able to select from a list of supported mobile operating systems based on the application settings 706 , and a selection may initiate a preview process based on the current application metadata definition 704 .
- the platform may include multiple generators 710 that may read the application definition metadata 704 and may automatically create a corresponding mobile application for each supported and/or selected mobile operating system and platform.
- the generators may be pre-built components of the platform, and may be developed to meet specific requirements of the target mobile platform.
- Each generator may read application metadata and generate a software development kit (SDK) for a specific mobile platform and a user-interface (UI) for a specific mobile platform.
- SDK software development kit
- UI user-interface
- the combination of the SDK and UI may be referred to as a generated application. It is possible to also generate only an SDK and develop the UI outside the platform that utilizes the SDK.
- the platform may be architected to support the addition of newly developed generators as new mobile platforms, such as Microsoft Windows Mobile 8 , emerge and become ready to support.
- the illustration in FIG. 7 depicts three example generators.
- generators may be provided for mobile platforms such as, but not limited to, HTML5 web applications, Android native applications, and/or iOS native applications.
- the generator for HTML5 web apps may copy the assembled output HTML, javascript, and cascading style sheet (CSS) files 718 to a web-based file server 716 .
- the application designer may then preview the HTML5 web application 724 within a web browser.
- the generators that create native applications may establish connectivity with web-based application compilers such as, but not limited to, a Unix-based server for native Android compilation 714 and/or an OSX server for native iOS compilation 712 . Once the compilation servers have completed their tasks, the compiled native application files 717 may be copied to a web-based file server 716 .
- the application designer may then preview the native mobile applications by clicking a web URL that may download and install the applications over a wireless network on a supported mobile device, such as, but not limited to, Android-based devices 720 and/or iOS-based devices 722 .
- a supported mobile device such as, but not limited to, Android-based devices 720 and/or iOS-based devices 722 .
- Both the compiled native application and the source code may be available for download.
- the source code can be executed on any computer that has the requisite development tools installed to compile the source code and display the app in a simulator or emulator.
- the compiled versions of the native application may be installed on any device that has the appropriate certificates to run the application.
- the application designer may choose to publish the application 114 for use by an end-user audience.
- a user may also choose to publish the application 114 for use by an end-user audience without previewing.
- the application designer may click a publish button within the user interface 310 , which may be browser-based. This may initiate a publication process based on the current application metadata definition 316 .
- the platform may include multiple generators 326 that may read the application definition metadata 316 and may automatically create new versions of the client mobile applications 330 based on the changed metadata for each mobile operating system and platform that are supported by each generator.
- the generator examines the metadata and generates a new application (SDK and UI), the version on the SDK and UI may be incremented.
- SDK and UI there may be generators 326 for HTML5 web applications, Android native applications, iOS native applications, and/or other applications.
- a new version of the run-time service application 332 may be generated by the platform based on the metadata definition 316 , which may provide supporting functions to the client applications 330 such as, but not limited to, user authentication, role based access, business logic, and/or extension functionality 324 .
- the run-time service application 332 may be a self-contained server-side application that may be further customized by application designers as needed.
- Customizations to the server-side application can be made by writing custom code on the application objects' model or controller areas, or by editing the generated source code of the server-side application outside the platform.
- the run-time server application may be deployed to a network and/or system operator managed servers 814 and/or to servers managed by operator customers or partners 820 via a third-party source code repository 818 that may also manage any optional customizations made by customers or partners to the run-time service application code.
- the platform may provide support for authorized third-party applications 311 to connect to the design-time services application programming interface (API) 312 via login to an appropriate account within the multi-tenant design-time environment 314 , and may programmatically create or update application definition metadata 316 and may initiate the preview or publishing 328 of a mobile application based on the metadata. For example, this may happen when the platform serves as a mobile application generator for a third party application such as an enterprise resource planning (ERP) solution developed by a third party software vendor.
- ERP enterprise resource planning
- the vendor may allow their users to select from a series of options such as which ERP objects and fields to mobile-enable, and then employ the platform design-time services API to programmatically create new application metadata, possibly via the selection of a template, comprising data sources 317 , objects 318 , user interface components 320 , and/or extensions 322 .
- the ERP system can then use the design-time services API to generate the application and provide the user with a link to download and run the generated mobile application.
- authorized third party applications 334 may also connect to the run-time services API 332 and may programmatically access the same functions and operations available to the mobile client applications 330 .
- This method may be used, for example, to facilitate integration with third party applications such as a corporate intranet or human resources (HR) application.
- a corporate intranet or human resources (HR) application For example, an employee services mobile app may be used by employees to submit recognition to colleagues in appreciation of a task well done.
- the corporate intranet application may provide a screen called “Top Employees of the Month” and may connect to the run-time services API to obtain a count of all recognition records across all employees for a given month via the recognition object. The application may then present the intranet user with the top ten employees ranked by recognition count.
- the HR application can connect to the run-time services API to obtain a count of all recognition records for a given employee for the year via the recognition object. The application may then present the manager user with the recognition information to be used in the review process.
- the design-time components may include the multi-tenant account management layer 314 , the application definition metadata 316 , and/or the application (user interface and software development kit) generators 326 .
- the run-time components may include the run-time services API 332 , installed extensions 324 , and/or client-side applications 330 (consisting of a user interface and software development kit), which may run as either a native app within a mobile operating system or a web app within a web browser.
- 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.
Abstract
Description
- 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.
-
FIG. 1 is an example flow chart of a mobile application creation and deployment process according to an embodiment of the invention. -
FIG. 2 is an example flow chart of a process for editing a definition of a mobile application according to an embodiment of the invention. -
FIG. 3 is an example illustration of architectural components according to an embodiment of the invention. -
FIG. 4 is an example hierarchy of user interface pages and components that define a mobile application according to an embodiment of the invention. -
FIG. 5 . is an example block diagram of data sources, objects, user interface (UI) components, and extensions that comprise an application definition according to an embodiment of the invention. -
FIG. 6 . is an example of a set of extensions and application definitions according to an embodiment of the invention. -
FIG. 7 . is an example of components and flow involved during a preview or publishing operation of a mobile application according to an embodiment of the invention. -
FIG. 8 . is an example of infrastructure components and network communication paths according to an embodiment of the invention. - A 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
FIG. 1 , a platform may provide systems and/or enable methods for building and deploying mobile applications across one or more mobile operating systems. Users may log in to anapplication designer 100, which may also be referred to as a development environment, via a web browser with Internet connectivity and/or via some other user interface. If a new mobile application is being created, the user may enter a name for theapplication 102, and may optionally select atemplate 104 with pre-assembled functionality. The platform may provide access to a plurality of mobile application templates that may be used to reduce development time and/or complexity. Users may also publish new templates that may be made available for selection. In some embodiments, only authorized system administrators of the platform and/or other qualified users may be permitted to publish new templates. When a template is selected, the new application definition may be populated with data sources, objects, extensions, and/or user interface element metadata with relationship mappings that may describe how an application should behave when running. For example, a template may include a pre-defined mobile application for employees to perform common human resources related tasks or requests such as view other employees in a company directory, view news about the company, and/or view personal compensation information. When this template is selected, an application may automatically be created and populated with a series of objects representing entities such as employees, news items, and compensation. In addition, the template may automatically generate user interface components mapped to these objects, such as a home page with new items and tool bar buttons, a company directory list page, and a total compensation list page with chart components. With the basic object and user interface structure now in place, the user may continue to edit the application that was created from the template to ensure it meets the specific requirements of the user's company. A generic example of metadata entities and mappings is shown inFIG. 5 , and explained in further detail below. - Referring again to
FIG. 1 , in addition to creating a new application, the user may be able to select an existingapplication 106 that was previously created. Once the user creates a new application or selects an existing application, they may be presented with a graphical interface that may allow for visual editing of theapplication definition 110. As described in greater detail below, after a user has edited theapplication definition 110, they may preview theapplication 112. If the user is dissatisfied with the preview, the user may continue editing 110. If the user is satisfied with the preview, the user may publish theapplication 114. After the application has been published, it may also be submitted to a relevant app store 116 (e.g., an Apple or Google store), based on whether the user desires to distribute the app via a public app store. The published application may be submitted to therelevant app store 116 if it is a native application designed to run specifically on an OS associated with the relevant app store (e.g., iOS app to the Apple store and/or Android app to the Google store), for example. Published applications may also be distributed in other ways. For example, some applications, such as HTML5 mobile applications, may be deployed to users via an Internet URL address and may not require a third party distribution channel. After the app has been published, the user may want to update the app with new functionality, at which point they may restart the process described inFIG. 1 . If updates including new functionality are made to native applications, the applications may be re-compiled and re-distributed to end-users via the original channel. There may be end users who delay installing updates to the application, and older versions of server-side APIs may be maintained so that previous versions of native apps will continue to function. - 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
FIG. 2 . - 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
FIG. 5 ,data sources 506 may be linked viastorage connectors 504 to databases, web services, and/or software applications 502 such as, but not limited to, MySQL, Postgress, REST or SOAP web services, Oracle e-Business Suite, SAP ERP, and/or Salesforce.com.Storage connectors 504 may be pre-built adapters which may connect to a specific database, web service, and/or software application. For example, to create adata source 506 that is connected to an external MySQL database, a user may employ a MySQL storage connector. The platform may also provide astorage connector 504 to a built-in database, which may be used to save or retrieve data without having to connect to an external data source. Further, users may be able to publish suchnew storage connectors 504. In some embodiments, only authorized system administrators of the platform and/or other qualified users may be permitted to publishnew storage connectors 504 for use in applications. An application designer may specify connectivity parameters within the data source as may be required by thestorage connector 504, such as, but not limited to, network address, user name, and/or password. The parameters may be used to establish a connection when a connection is requested and/or needed. As described in greater detail below, thedata sources 506 may include and/or be associated withvarious objects 508, fields 510,events 512,extensions 514, custom or third-party web services 516,UI components 518, and/or UI sub-components orproperties 520.FIG. 5 further illustrates the relationships between the metadata entities and their children.Data sources 506 may contain fields or data elements which may be mapped to corresponding fields 510 within anobject 508. Theobject 508 may includelifecycle events 512 based on operations such as create, update, save, and/or delete, which can invokecustom code 515 orextensions 514 that may correspond to custom or third party web services. 516. Furthermore, objects 508 may be mapped toUI components 518 which may expose data withinUI component properties 520 that may be mapped to object fields 510. - Referring again to
FIG. 2 , editing an application definition may begin with the creation of one ormore data sources 200. Once data sources are saved, objects may be created and mapped to the data sources 202. As illustrated in the example inFIG. 5 , objects 508 may contain fields 510 that may be mapped to corresponding fields on the object's data source. Each object may be mapped to one data source, and each field within an object may be mapped to a single field on a data source. An object may be an abstract representation of a major data element from the data source. For example, if the data source is a customer relationship management (CRM) system, and one of the data elements in the CRM system is customer, an object called “customer” may be mapped to the CRM data source's customer element. The mapping between an object and data source may be one-to-one. An application may have multiple objects that may be mapped to different data sources. Optional query scopes may be defined at the object level. The query scopes may serve to retrieve a subset of data from the data source based on matching field value operations and/or sort orders. Further, a query scope may apply additional rules to filter the data based on the current end-user's attributes, such as, but not limited to, country, language, and/or time zone. This query scope may be referenced when defining user interface elements to enable end-users of a mobile application to interact with specific subsets of data. - 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:
-
<object-definition> <application-definition-id type=“integer”>1</application-definition-id> <code-friendly-name>Employee</code-friendly-name> <composite-key-delimiter>-</composite-key-delimiter> <created-at type=“datetime”>2012-11-17T23:49:26Z</created-at> <default-sort-field>last_name</default-sort-field> <default-sort-order>Ascending</default-sort-order> <display-friendly-name>Employee</display-friendly-name> <downcase-lookup-field type=“boolean”>true</downcase-lookup-field> <has-secure-password type=“boolean”>false</has-secure-password> <id type=“integer”>4</id> <lookup-field nil=“true”/> <mapping>employees</mapping> <name>Employee</name> <role-field nil=“true”/> <slug>employee</slug> <storage-interface-id type=“integer”>2</storage-interface-id> <updated-at type=“datetime”>2012-11-17T23:49:26Z</updated-at> </object-definition> <field-definitions type=“array”> <field-definition> <auto type=“boolean”>true</auto> <created-at type=“datetime”>2012-11-17T23:49:26Z</created-at> <display-friendly-name>Id</display-friendly-name> <field-type>Integer</field-type> <file-type>Image</file-type> <file-url type=“boolean”>false</file-url> <id type=“integer”>21</id> <key type=“boolean”>true</key> <mapping>id</mapping> <name>id</name> <object-definition-id type=“integer”>4</object-definition-id> <required type=“boolean”>false</required> <slug>id</slug> <updated-at type=“datetime”>2012-11-17T23:49:26Z</updated-at> </field-definition> <field-definition> <autotype=“boolean”>false</auto> <created-at type=“datetime”>2012-11-17T23:49:26Z</created-at> <display-friendly-name>Department</display-friendly-name> <field-type>String</field-type> <file-type>Image</file-type> <file-url type=“boolean”>false</file-url> <id type=“integer”>28</id> <key type=“boolean”>false</key> <mapping>department</mapping> <name>department</name> <object-definition-id type=“integer”>4</object-definition-id> <required type=“boolean”>false</required> <slug>department</slug> <updated-at type=“datetime”>2012-11-17T23:49:26Z</updated-at> </field-definition> ... </field-definitions> - 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
FIG. 2 , once the user has defined data sources and objects,optional extensions 210 may be installed to expand the functionality of the application. An example is an extension that sends Short Message Services (SMS) text messages. Another example is an extension that sends push notifications to native applications via Apple's Push Notification service (APN) or Google's Cloud Messaging for Android (GCM). As illustrated inFIG. 6 ,extensions 602 may be developed by different parties and may be registered by a user, such as an authorized system administrator, within the platform to become available for use by application designers. For example, extensions may be provided by aplatform administrator 604 and/or by athird party 606. The application designer may be able to install one or more extensions within one ormore applications - Referring again to
FIG. 2 , the user may map the extension-generatedmetadata 214 to other data sources, objects, and/or custom code within the application definition. Further, the extension may exposeconfiguration settings 212 that the user may edit from within the designer user interface. These settings may be extension-specific, and may vary based on the selected extension and any supporting third party services. For example, settings for a push notification extension may include the certificates required by Apple or Google to utilize their messaging delivery services. As illustrated inFIG. 8 , extensions developed by a network and/orsystem operator 810 may be executed on network and/or system operator managedservers 814, and may interact with web-based third party services 812. Extensions may also be developed and hosted by customers or partners of the operator, within their own managedinfrastructure 824, which may also interact with web-based third party services 812. - 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.FIG. 5 illustrates an example mapping betweenobject events 512,extensions 514,custom code 515, and the corresponding custom or thirdparty web service 516. An example use of a custom web service could be to update an external system when a user creates a new object instance in a preexisting application. An example use of a third-party service could be to update usage information in a third-party analytics solution in response to user operations within a preexisting application. - Referring again to
FIG. 2 , the platform may allow a user to assemble the user interface of the application by using page andcomponent elements 226. These user interface components may be visual elements of the application such a list of records with a search button, a form with data entry fields and a submit button, and/or an interactive map of the user's current location. The platform may internally store the user interface (UI) elements, including pages and components, in a hierarchical structure. In the hierarchical structure, the relationship of a UI element to its parent and children, and the attribute values (or properties) of the element, may determine how the UI element will be rendered when the app is running in the client device environment. UI component properties may vary based on the type of component. For example, a button component may have properties that control appearance such as name, width, border radius, background color, and/or font style. A list page component may have properties that determine what data to display, such as object query scope, row header, row body, and/or items per page.FIG. 5 illustrates an example mapping betweenobjects 508 andUI components 518, and between object fields 510 andcomponent properties 520. - An example hierarchy of UI elements is illustrated in
FIG. 4 . Acontent page 400 may contain alist component 402 and abutton component 404. In this example, thelist component 402 may render a list of data records based on the object to which the component is mapped. Each record in the list may be displayed according to thelist item component 408, which in this example is animage component 410 followed by alabel component 412. Thebutton component 404 may enable the end-user to create a new record, and may display a newrecord form page 406 to allow for input of the new record data. Thedetail page 414 may display data from an individual record that the end-user may select in thelist component 402. The record data may be displayed on the detail page using animage component 416 and one or more styledtext components 420. For example, an employee services application may contain a list page called “employee directory” that may be mapped to the employee object's “all” query scope to display all records. The row header property of the list page may display the employee object fields first name and last name. The row body property may display the employee object field title and department. This may result in a list page in a mobile application that displays all employees in a list, with the employee first name, last name, title, and department in each row of the list. - Referring to
FIG. 1 andFIG. 2 , before previewing 112 or publishing 114 the application, the platform may allow a user to specifygeneral application settings 230 such as, but not limited to, which mobile operating systems may be supported and/or general appearance properties such as color theme and/or icon. If the application is to be generated as a native mobile application, thenadditional settings 232, such as, but not limited to, ad-hoc provisioning files, private keys, and/or developer certificates, may be specified or uploaded to enable the application to be compiled as a native application on selected mobile operating systems. - Referring again to
FIG. 1 , the platform may allow a user to preview theapplication 112 based on the current application metadata definitions. Previews may be available for any mobile operating systems that the application may be targeted to support as specified in its general application settings. As illustrated inFIG. 7 , the application designer may, for example, click a preview button within adesigner user interface 702, which may be a browser-based interface. The user may be able to select from a list of supported mobile operating systems based on theapplication settings 706, and a selection may initiate a preview process based on the currentapplication metadata definition 704. The platform may includemultiple generators 710 that may read theapplication definition metadata 704 and may automatically create a corresponding mobile application for each supported and/or selected mobile operating system and platform. The generators may be pre-built components of the platform, and may be developed to meet specific requirements of the target mobile platform. Each generator may read application metadata and generate a software development kit (SDK) for a specific mobile platform and a user-interface (UI) for a specific mobile platform. Collectively, the combination of the SDK and UI may be referred to as a generated application. It is possible to also generate only an SDK and develop the UI outside the platform that utilizes the SDK. Furthermore, the platform may be architected to support the addition of newly developed generators as new mobile platforms, such as Microsoft Windows Mobile 8, emerge and become ready to support. The illustration inFIG. 7 depicts three example generators. For example, generators may be provided for mobile platforms such as, but not limited to, HTML5 web applications, Android native applications, and/or iOS native applications. In one example, the generator for HTML5 web apps may copy the assembled output HTML, javascript, and cascading style sheet (CSS) files 718 to a web-basedfile server 716. The application designer may then preview theHTML5 web application 724 within a web browser. The generators that create native applications may establish connectivity with web-based application compilers such as, but not limited to, a Unix-based server for nativeAndroid compilation 714 and/or an OSX server fornative iOS compilation 712. Once the compilation servers have completed their tasks, the compiled native application files 717 may be copied to a web-basedfile server 716. The application designer may then preview the native mobile applications by clicking a web URL that may download and install the applications over a wireless network on a supported mobile device, such as, but not limited to, Android-baseddevices 720 and/or iOS-baseddevices 722. Both the compiled native application and the source code may be available for download. The source code can be executed on any computer that has the requisite development tools installed to compile the source code and display the app in a simulator or emulator. The compiled versions of the native application may be installed on any device that has the appropriate certificates to run the application. - Referring again to
FIG. 1 , once the application designer is satisfied with the preview of theirapplication 112, they may choose to publish theapplication 114 for use by an end-user audience. A user may also choose to publish theapplication 114 for use by an end-user audience without previewing. As illustrated inFIG. 3 , the application designer may click a publish button within theuser interface 310, which may be browser-based. This may initiate a publication process based on the currentapplication metadata definition 316. The platform may includemultiple generators 326 that may read theapplication definition metadata 316 and may automatically create new versions of the clientmobile applications 330 based on the changed metadata for each mobile operating system and platform that are supported by each generator. When the generator examines the metadata and generates a new application (SDK and UI), the version on the SDK and UI may be incremented. For example, there may begenerators 326 for HTML5 web applications, Android native applications, iOS native applications, and/or other applications. A new version of the run-time service application 332 may be generated by the platform based on themetadata definition 316, which may provide supporting functions to theclient applications 330 such as, but not limited to, user authentication, role based access, business logic, and/orextension functionality 324. The run-time service application 332 may be a self-contained server-side application that may be further customized by application designers as needed. Customizations to the server-side application can be made by writing custom code on the application objects' model or controller areas, or by editing the generated source code of the server-side application outside the platform. Further, as illustrated inFIG. 8 , the run-time server application may be deployed to a network and/or system operator managedservers 814 and/or to servers managed by operator customers orpartners 820 via a third-partysource code repository 818 that may also manage any optional customizations made by customers or partners to the run-time service application code. - Referring again to
FIG. 3 , the platform may provide support for authorized third-party applications 311 to connect to the design-time services application programming interface (API) 312 via login to an appropriate account within the multi-tenant design-time environment 314, and may programmatically create or updateapplication definition metadata 316 and may initiate the preview or publishing 328 of a mobile application based on the metadata. For example, this may happen when the platform serves as a mobile application generator for a third party application such as an enterprise resource planning (ERP) solution developed by a third party software vendor. In this example, if the ERP software vendor wants to provide its customers with the ability to generate customized mobile apps that are integrated directly to the ERP solution, the vendor may allow their users to select from a series of options such as which ERP objects and fields to mobile-enable, and then employ the platform design-time services API to programmatically create new application metadata, possibly via the selection of a template, comprisingdata sources 317, objects 318,user interface components 320, and/orextensions 322. The ERP system can then use the design-time services API to generate the application and provide the user with a link to download and run the generated mobile application. Further, authorizedthird party applications 334 may also connect to the run-time services API 332 and may programmatically access the same functions and operations available to themobile client applications 330. This method may be used, for example, to facilitate integration with third party applications such as a corporate intranet or human resources (HR) application. For example, an employee services mobile app may be used by employees to submit recognition to colleagues in appreciation of a task well done. The corporate intranet application may provide a screen called “Top Employees of the Month” and may connect to the run-time services API to obtain a count of all recognition records across all employees for a given month via the recognition object. The application may then present the intranet user with the top ten employees ranked by recognition count. During the annual review process, the HR application can connect to the run-time services API to obtain a count of all recognition records for a given employee for the year via the recognition object. The application may then present the manager user with the recognition information to be used in the review process. This capability to provide third-party applications, with both a design-time services API to programmatically define an application and a run-time services API to programmatically interface with a generated application, may be enabled by strict architectural separation between the design-time and run-time components of the platform. The design-time components may include the multi-tenantaccount management layer 314, theapplication definition metadata 316, and/or the application (user interface and software development kit)generators 326. The run-time components may include the run-time services API 332, installedextensions 324, and/or client-side applications 330 (consisting of a user interface and software development kit), which may run as either a native app within a mobile operating system or a web app within a web browser. - 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 (40)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/629,346 US20150169293A1 (en) | 2012-03-30 | 2015-02-23 | Systems and methods for building and deploying mobile applications |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201261618157P | 2012-03-30 | 2012-03-30 | |
US13/767,433 US8997038B2 (en) | 2012-03-30 | 2013-02-14 | Systems and methods for building and deploying mobile applications |
US14/629,346 US20150169293A1 (en) | 2012-03-30 | 2015-02-23 | Systems and methods for building and deploying mobile applications |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/767,433 Continuation US8997038B2 (en) | 2012-03-30 | 2013-02-14 | Systems and methods for building and deploying mobile applications |
Publications (1)
Publication Number | Publication Date |
---|---|
US20150169293A1 true US20150169293A1 (en) | 2015-06-18 |
Family
ID=49236558
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/767,433 Expired - Fee Related US8997038B2 (en) | 2012-03-30 | 2013-02-14 | Systems and methods for building and deploying mobile applications |
US14/629,346 Abandoned US20150169293A1 (en) | 2012-03-30 | 2015-02-23 | Systems and methods for building and deploying mobile applications |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/767,433 Expired - Fee Related US8997038B2 (en) | 2012-03-30 | 2013-02-14 | Systems and methods for building and deploying mobile applications |
Country Status (1)
Country | Link |
---|---|
US (2) | US8997038B2 (en) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106354542A (en) * | 2016-08-27 | 2017-01-25 | 乐视控股(北京)有限公司 | Method and device for generating application |
US20180267781A1 (en) * | 2017-03-20 | 2018-09-20 | Coursera Inc. | Code generation for isomorphic data fetching |
CN109271148A (en) * | 2018-09-29 | 2019-01-25 | 中国建设银行股份有限公司 | A kind of mobile application generation method and device |
US10455002B2 (en) * | 2015-10-29 | 2019-10-22 | Tharmalingam Satkunarajah | Apparatus and method for generating customizable software based networking platforms |
EP3627312A1 (en) * | 2018-09-24 | 2020-03-25 | salesforce.com, inc. | Mobile app publishing for a responsive community experience |
US10922059B2 (en) * | 2017-01-27 | 2021-02-16 | Oracle International Corporation | Integrating application features into a platform interface based on application metadata |
Families Citing this family (122)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9336023B2 (en) * | 2009-12-18 | 2016-05-10 | Sybase, Inc. | Visual generation of mobile applications based on data models |
US8813028B2 (en) * | 2012-07-19 | 2014-08-19 | Arshad Farooqi | Mobile application creation system |
TWI478043B (en) * | 2012-11-22 | 2015-03-21 | Inst Information Industry | Systems and methods for app page template generation, and storage medium thereof |
TWI501137B (en) * | 2012-12-11 | 2015-09-21 | Inst Information Industry | Editing system, method of interactive page templates and storage medium thereof |
US9038015B1 (en) | 2013-04-23 | 2015-05-19 | Clearblade, Inc. | System and method for creating a development and operational platform for mobile applications |
KR101793113B1 (en) * | 2013-06-28 | 2017-11-20 | 인텔 코포레이션 | Compatibility and optimization of web applications across independent application stores |
US9351105B2 (en) * | 2013-07-02 | 2016-05-24 | Sap Se | Location based applications |
US9258668B2 (en) * | 2013-07-31 | 2016-02-09 | Sap Se | Mobile application framework extensibiilty |
CN104423955A (en) * | 2013-09-05 | 2015-03-18 | 北大方正集团有限公司 | Method and system for realizing automatic compilation of iOS application |
US20150095880A1 (en) * | 2013-09-27 | 2015-04-02 | Salesforce.Com, Inc. | Facilitating software development tools on mobile computing devices in an on-demand services environment |
US11064326B2 (en) * | 2013-10-03 | 2021-07-13 | Nokia Of America Corporation | Creating, joining, finding, discovering, restoring and relocating process-based channels |
US9509761B2 (en) * | 2013-10-23 | 2016-11-29 | Sap Se | Open user interface |
WO2015142697A1 (en) * | 2014-03-15 | 2015-09-24 | Belva Kenneth F | Methods for determining cross-site scripting and related vulnerabilities in applications |
US9582254B2 (en) * | 2014-05-22 | 2017-02-28 | Oracle International Corporation | Generating runtime components |
JP6167990B2 (en) * | 2014-05-27 | 2017-07-26 | パナソニックIpマネジメント株式会社 | Signature verification system, verification device, and signature verification method |
US20150373048A1 (en) * | 2014-06-24 | 2015-12-24 | Kashif Ali Siddiqui | Enterprise Mobile Notification Solution |
US9961059B2 (en) * | 2014-07-10 | 2018-05-01 | Red Hat Israel, Ltd. | Authenticator plugin interface |
US20160026366A1 (en) * | 2014-07-22 | 2016-01-28 | Runfeng LUAN | Method and system for customizing mobile terminal application |
US9749311B2 (en) | 2014-09-24 | 2017-08-29 | Oracle International Corporation | Policy based compliance management and remediation of devices in an enterprise system |
US10088979B2 (en) * | 2014-09-26 | 2018-10-02 | Oracle International Corporation | Recasting a form-based user interface into a mobile device user interface using common data |
US9940112B2 (en) * | 2014-11-06 | 2018-04-10 | Capgemini Technology Services India Limited | Efficient framework for deploying middleware services |
US9928151B1 (en) * | 2014-12-12 | 2018-03-27 | Amazon Technologies, Inc. | Remote device interface for testing computing devices |
US9614828B1 (en) * | 2015-01-05 | 2017-04-04 | Amazon Technologies, Inc. | Native authentication experience with failover |
US20160196117A1 (en) * | 2015-01-05 | 2016-07-07 | Queue Software Inc. | System and method for graphical application development |
US9672032B2 (en) * | 2015-02-04 | 2017-06-06 | Sap Se | Mobile enabled application |
US20170031661A1 (en) | 2015-04-15 | 2017-02-02 | Alpha Software Corporation | Systems and methods for transactional applications in an unreliable wireless network |
WO2016172415A1 (en) * | 2015-04-22 | 2016-10-27 | Mobifalcon, Inc. | Non-coding mobile application solution |
US9898259B2 (en) * | 2015-06-02 | 2018-02-20 | Sap Portals Israel Ltd. | Data binding for model-based code generation |
US9851953B2 (en) | 2015-06-29 | 2017-12-26 | Oracle International Corporation | Cloud based editor for generation of interpreted artifacts for mobile runtime |
US11516338B2 (en) * | 2015-07-14 | 2022-11-29 | Ujet, Inc. | Communication channel enhancement |
US11102313B2 (en) | 2015-08-10 | 2021-08-24 | Oracle International Corporation | Transactional autosave with local and remote lifecycles |
US10582001B2 (en) | 2015-08-11 | 2020-03-03 | Oracle International Corporation | Asynchronous pre-caching of synchronously loaded resources |
US9959100B2 (en) | 2015-08-12 | 2018-05-01 | Oracle International Corporation | Efficient storage and transfer of iOS binary files |
US10013668B2 (en) | 2015-08-14 | 2018-07-03 | Oracle International Corporation | Secure storage of enterprise certificates for cloud services |
US10452497B2 (en) | 2015-08-14 | 2019-10-22 | Oracle International Corporation | Restoration of UI state in transactional systems |
US10419514B2 (en) * | 2015-08-14 | 2019-09-17 | Oracle International Corporation | Discovery of federated logins |
US10582012B2 (en) | 2015-10-16 | 2020-03-03 | Oracle International Corporation | Adaptive data transfer optimization |
US9696967B2 (en) * | 2015-11-09 | 2017-07-04 | Microsoft Technology Licensing, Llc | Generation of an application from data |
US9891890B2 (en) | 2015-11-09 | 2018-02-13 | Microsoft Technology Licensing, Llc | Generation of an application from template |
US9823919B2 (en) | 2015-12-30 | 2017-11-21 | Microsoft Technology Licensing, Llc | Controlled deployment of application feature in mobile environment |
US9858063B2 (en) | 2016-02-10 | 2018-01-02 | Vignet Incorporated | Publishing customized application modules |
US9848061B1 (en) | 2016-10-28 | 2017-12-19 | Vignet Incorporated | System and method for rules engine that dynamically adapts application behavior |
US9928230B1 (en) | 2016-09-29 | 2018-03-27 | Vignet Incorporated | Variable and dynamic adjustments to electronic forms |
US10348866B2 (en) | 2016-02-19 | 2019-07-09 | Wuhan Mbaas Computing Co. Ltd. | Apparatus, system and method to provide IoT cloud backend service |
US10740080B2 (en) * | 2016-04-22 | 2020-08-11 | Kony, Inc. | Preview and publishing of mobile applications |
US10341410B2 (en) | 2016-05-11 | 2019-07-02 | Oracle International Corporation | Security tokens for a multi-tenant identity and data security management cloud service |
US10454940B2 (en) | 2016-05-11 | 2019-10-22 | Oracle International Corporation | Identity cloud service authorization model |
US10878079B2 (en) | 2016-05-11 | 2020-12-29 | Oracle International Corporation | Identity cloud service authorization model with dynamic roles and scopes |
US9838377B1 (en) | 2016-05-11 | 2017-12-05 | Oracle International Corporation | Task segregation in a multi-tenant identity and data security management cloud service |
US10581820B2 (en) | 2016-05-11 | 2020-03-03 | Oracle International Corporation | Key generation and rollover |
US10425386B2 (en) | 2016-05-11 | 2019-09-24 | Oracle International Corporation | Policy enforcement point for a multi-tenant identity and data security management cloud service |
US10263947B2 (en) | 2016-08-05 | 2019-04-16 | Oracle International Corporation | LDAP to SCIM proxy service |
US10735394B2 (en) | 2016-08-05 | 2020-08-04 | Oracle International Corporation | Caching framework for a multi-tenant identity and data security management cloud service |
US10721237B2 (en) | 2016-08-05 | 2020-07-21 | Oracle International Corporation | Hierarchical processing for a virtual directory system for LDAP to SCIM proxy service |
US10585682B2 (en) | 2016-08-05 | 2020-03-10 | Oracle International Corporation | Tenant self-service troubleshooting for a multi-tenant identity and data security management cloud service |
US10255061B2 (en) | 2016-08-05 | 2019-04-09 | Oracle International Corporation | Zero down time upgrade for a multi-tenant identity and data security management cloud service |
US10530578B2 (en) | 2016-08-05 | 2020-01-07 | Oracle International Corporation | Key store service |
US10516672B2 (en) | 2016-08-05 | 2019-12-24 | Oracle International Corporation | Service discovery for a multi-tenant identity and data security management cloud service |
US10484382B2 (en) | 2016-08-31 | 2019-11-19 | Oracle International Corporation | Data management for a multi-tenant identity cloud service |
US10594684B2 (en) | 2016-09-14 | 2020-03-17 | Oracle International Corporation | Generating derived credentials for a multi-tenant identity cloud service |
US10846390B2 (en) | 2016-09-14 | 2020-11-24 | Oracle International Corporation | Single sign-on functionality for a multi-tenant identity and data security management cloud service |
US10511589B2 (en) | 2016-09-14 | 2019-12-17 | Oracle International Corporation | Single logout functionality for a multi-tenant identity and data security management cloud service |
US10341354B2 (en) | 2016-09-16 | 2019-07-02 | Oracle International Corporation | Distributed high availability agent architecture |
US10791087B2 (en) | 2016-09-16 | 2020-09-29 | Oracle International Corporation | SCIM to LDAP mapping using subtype attributes |
JP7018437B2 (en) | 2016-09-16 | 2022-02-10 | オラクル・インターナショナル・コーポレイション | Multi-tenant identity and data security management Tenant and service management for cloud services |
US10484243B2 (en) | 2016-09-16 | 2019-11-19 | Oracle International Corporation | Application management for a multi-tenant identity cloud service |
US10445395B2 (en) | 2016-09-16 | 2019-10-15 | Oracle International Corporation | Cookie based state propagation for a multi-tenant identity cloud service |
US10567364B2 (en) | 2016-09-16 | 2020-02-18 | Oracle International Corporation | Preserving LDAP hierarchy in a SCIM directory using special marker groups |
US10904074B2 (en) | 2016-09-17 | 2021-01-26 | Oracle International Corporation | Composite event handler for a multi-tenant identity cloud service |
US11720330B2 (en) | 2016-10-17 | 2023-08-08 | Engineer.ai Corp. | Application development involving instant protoyping |
US11256606B2 (en) | 2016-11-04 | 2022-02-22 | Salesforce.Com, Inc. | Declarative signup for ephemeral organization structures in a multitenant environment |
US10007490B1 (en) * | 2016-12-14 | 2018-06-26 | Facebook, Inc. | Automatic generation of native E-commerce applications for mobile devices |
US10261836B2 (en) | 2017-03-21 | 2019-04-16 | Oracle International Corporation | Dynamic dispatching of workloads spanning heterogeneous services |
US20180278721A1 (en) * | 2017-03-22 | 2018-09-27 | Salesforce.Com, Inc. | Techniques and Architectures for Providing a Command Line Interface Functionality as a Web Service |
US10803411B1 (en) | 2017-04-17 | 2020-10-13 | Microstrategy Incorporated | Enterprise platform deployment |
US10572278B2 (en) * | 2017-05-08 | 2020-02-25 | Sap Se | Smart controls for user interface design and implementation |
US10454915B2 (en) | 2017-05-18 | 2019-10-22 | Oracle International Corporation | User authentication using kerberos with identity cloud service |
US10348858B2 (en) | 2017-09-15 | 2019-07-09 | Oracle International Corporation | Dynamic message queues for a microservice based cloud service |
US11308132B2 (en) | 2017-09-27 | 2022-04-19 | Oracle International Corporation | Reference attributes for related stored objects in a multi-tenant cloud service |
US10834137B2 (en) | 2017-09-28 | 2020-11-10 | Oracle International Corporation | Rest-based declarative policy management |
US11271969B2 (en) | 2017-09-28 | 2022-03-08 | Oracle International Corporation | Rest-based declarative policy management |
US10705823B2 (en) | 2017-09-29 | 2020-07-07 | Oracle International Corporation | Application templates and upgrade framework for a multi-tenant identity cloud service |
CA3082405A1 (en) * | 2017-11-13 | 2019-05-16 | Equifax Inc. | Building segment-specific executable program code for modeling outputs |
US10715564B2 (en) | 2018-01-29 | 2020-07-14 | Oracle International Corporation | Dynamic client registration for an identity cloud service |
US10931656B2 (en) | 2018-03-27 | 2021-02-23 | Oracle International Corporation | Cross-region trust for a multi-tenant identity cloud service |
US10798165B2 (en) | 2018-04-02 | 2020-10-06 | Oracle International Corporation | Tenant data comparison for a multi-tenant identity cloud service |
US11165634B2 (en) | 2018-04-02 | 2021-11-02 | Oracle International Corporation | Data replication conflict detection and resolution for a multi-tenant identity cloud service |
US11258775B2 (en) | 2018-04-04 | 2022-02-22 | Oracle International Corporation | Local write for a multi-tenant identity cloud service |
US11012444B2 (en) | 2018-06-25 | 2021-05-18 | Oracle International Corporation | Declarative third party identity provider integration for a multi-tenant identity cloud service |
US10764273B2 (en) | 2018-06-28 | 2020-09-01 | Oracle International Corporation | Session synchronization across multiple devices in an identity cloud service |
US10754671B2 (en) | 2018-07-30 | 2020-08-25 | Sap Portals Israel Ltd. | Synchronizing user interface controls |
US11010272B2 (en) | 2018-07-31 | 2021-05-18 | Salesforce.Com, Inc. | Systems and methods for secure data transfer between entities in a multi-user on-demand computing environment |
US11010481B2 (en) | 2018-07-31 | 2021-05-18 | Salesforce.Com, Inc. | Systems and methods for secure data transfer between entities in a multi-user on-demand computing environment |
US10775974B2 (en) | 2018-08-10 | 2020-09-15 | Vignet Incorporated | User responsive dynamic architecture |
US11693835B2 (en) | 2018-10-17 | 2023-07-04 | Oracle International Corporation | Dynamic database schema allocation on tenant onboarding for a multi-tenant identity cloud service |
US11321187B2 (en) | 2018-10-19 | 2022-05-03 | Oracle International Corporation | Assured lazy rollback for a multi-tenant identity cloud service |
US11158423B2 (en) | 2018-10-26 | 2021-10-26 | Vignet Incorporated | Adapted digital therapeutic plans based on biomarkers |
US11538091B2 (en) * | 2018-12-28 | 2022-12-27 | Cloudblue Llc | Method of digital product onboarding and distribution using the cloud service brokerage infrastructure |
US10983767B2 (en) * | 2019-01-04 | 2021-04-20 | T-Mobile Usa, Inc. | Microservice-based software development |
US11068259B2 (en) | 2019-01-04 | 2021-07-20 | T-Mobile Usa, Inc. | Microservice-based dynamic content rendering |
US10762990B1 (en) | 2019-02-01 | 2020-09-01 | Vignet Incorporated | Systems and methods for identifying markers using a reconfigurable system |
US11651357B2 (en) | 2019-02-01 | 2023-05-16 | Oracle International Corporation | Multifactor authentication without a user footprint |
US11061929B2 (en) | 2019-02-08 | 2021-07-13 | Oracle International Corporation | Replication of resource type and schema metadata for a multi-tenant identity cloud service |
US11321343B2 (en) | 2019-02-19 | 2022-05-03 | Oracle International Corporation | Tenant replication bootstrap for a multi-tenant identity cloud service |
US11669321B2 (en) | 2019-02-20 | 2023-06-06 | Oracle International Corporation | Automated database upgrade for a multi-tenant identity cloud service |
US11792226B2 (en) | 2019-02-25 | 2023-10-17 | Oracle International Corporation | Automatic api document generation from scim metadata |
US11423111B2 (en) | 2019-02-25 | 2022-08-23 | Oracle International Corporation | Client API for rest based endpoints for a multi-tenant identify cloud service |
US11714658B2 (en) | 2019-08-30 | 2023-08-01 | Microstrategy Incorporated | Automated idle environment shutdown |
US11755372B2 (en) | 2019-08-30 | 2023-09-12 | Microstrategy Incorporated | Environment monitoring and management |
US11687378B2 (en) | 2019-09-13 | 2023-06-27 | Oracle International Corporation | Multi-tenant identity cloud service with on-premise authentication integration and bridge high availability |
US11870770B2 (en) | 2019-09-13 | 2024-01-09 | Oracle International Corporation | Multi-tenant identity cloud service with on-premise authentication integration |
EP4058886A4 (en) * | 2019-11-11 | 2023-12-13 | AVEVA Software, LLC | Computerized system and method for a distributed low-code / no-code computing environment |
US11611548B2 (en) | 2019-11-22 | 2023-03-21 | Oracle International Corporation | Bulk multifactor authentication enrollment |
US11652790B2 (en) * | 2019-12-06 | 2023-05-16 | Servicenow, Inc. | Quarantine for cloud-based services |
US11669889B2 (en) * | 2020-08-26 | 2023-06-06 | Aleksandr Iurev | System and method for automated generation of mobile applications for electronic shopping |
US11763919B1 (en) | 2020-10-13 | 2023-09-19 | Vignet Incorporated | Platform to increase patient engagement in clinical trials through surveys presented on mobile devices |
US11669890B2 (en) * | 2020-10-20 | 2023-06-06 | Aleksandr Iurev | System and method for automated generation of mobile applications for electronic shopping |
US11550604B2 (en) * | 2021-01-05 | 2023-01-10 | Servicenow, Inc. | Dynamic client-side update of a view of an application |
US11886837B2 (en) * | 2021-04-10 | 2024-01-30 | Accenture Global Solutions Limited | Simulation-based software design and delivery attribute tradeoff identification and resolution |
US11934817B2 (en) * | 2021-10-25 | 2024-03-19 | Jpmorgan Chase Bank, N.A. | Systems and methods for deploying federated infrastructure as code |
US11901083B1 (en) | 2021-11-30 | 2024-02-13 | Vignet Incorporated | Using genetic and phenotypic data sets for drug discovery clinical trials |
US11705230B1 (en) | 2021-11-30 | 2023-07-18 | Vignet Incorporated | Assessing health risks using genetic, epigenetic, and phenotypic data sources |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6067575A (en) * | 1995-12-08 | 2000-05-23 | Sun Microsystems, Inc. | System and method for generating trusted, architecture specific, compiled versions of architecture neutral programs |
US6209029B1 (en) * | 1998-05-12 | 2001-03-27 | Silverstream Software, Inc. | Method and apparatus for accessing data sources in a three tier environment |
US20020104071A1 (en) * | 1999-10-05 | 2002-08-01 | Dietrich Charisius | Methods and systems for supporting and deploying distributed computing components |
US20040205696A1 (en) * | 2001-03-12 | 2004-10-14 | International Business Machines Corporation | Framework for code generators |
US8352903B1 (en) * | 2010-08-20 | 2013-01-08 | Google Inc. | Interaction with partially constructed mobile device applications |
US20130187926A1 (en) * | 2011-07-08 | 2013-07-25 | Steamfunk Labs, Inc. | Automated presentation of information using infographics |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6199195B1 (en) * | 1999-07-08 | 2001-03-06 | Science Application International Corporation | Automatically generated objects within extensible object frameworks and links to enterprise resources |
EP1410195A4 (en) * | 2001-06-22 | 2008-03-19 | Wonderware Corp | A customizable system for creating supervisory process control and manufacturing information applications |
US20040039975A1 (en) * | 2002-04-22 | 2004-02-26 | Kirill Kounik | Slowing graphics system for application optimization |
US7412658B2 (en) * | 2002-11-14 | 2008-08-12 | Sap Ag | Modeling system for graphic user interface |
US7240327B2 (en) * | 2003-06-04 | 2007-07-03 | Sap Ag | Cross-platform development for devices with heterogeneous capabilities |
US7219329B2 (en) * | 2003-06-13 | 2007-05-15 | Microsoft Corporation | Systems and methods providing lightweight runtime code generation |
US7444314B2 (en) * | 2003-12-01 | 2008-10-28 | International Business Machines Corporation | Methods and apparatus for business rules authoring and operation employing a customizable vocabulary |
US20050216282A1 (en) * | 2004-03-25 | 2005-09-29 | International Business Machines Corporation | System and method for business object discovery |
US8438537B2 (en) * | 2005-03-07 | 2013-05-07 | Siemens Aktiengesellschaft | System arrangement and method for automated application development with user guidance |
EP1866762A2 (en) * | 2005-03-21 | 2007-12-19 | Dexterra, Inc. | Modular applications for mobile data system |
US20080046557A1 (en) * | 2005-03-23 | 2008-02-21 | Cheng Joseph C | Method and system for designing, implementing, and managing client applications on mobile devices |
US8798583B2 (en) * | 2006-12-28 | 2014-08-05 | Funmobility, Inc. | Tag ticker display on a mobile device |
EP2294508A4 (en) * | 2008-06-30 | 2013-10-16 | Mominis Ltd | Method of generating and distributing a computer application |
US8776038B2 (en) * | 2008-08-07 | 2014-07-08 | Code Systems Corporation | Method and system for configuration of virtualized software applications |
US20100281475A1 (en) * | 2009-05-04 | 2010-11-04 | Mobile On Services, Inc. | System and method for mobile smartphone application development and delivery |
US8239840B1 (en) * | 2010-03-10 | 2012-08-07 | Google Inc. | Sensor simulation for mobile device applications |
US20120036494A1 (en) * | 2010-08-06 | 2012-02-09 | Genwi, Inc. | Web-based cross-platform wireless device application creation and management systems, and methods therefor |
US8261231B1 (en) * | 2011-04-06 | 2012-09-04 | Media Direct, Inc. | Systems and methods for a mobile application development and development platform |
-
2013
- 2013-02-14 US US13/767,433 patent/US8997038B2/en not_active Expired - Fee Related
-
2015
- 2015-02-23 US US14/629,346 patent/US20150169293A1/en not_active Abandoned
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6067575A (en) * | 1995-12-08 | 2000-05-23 | Sun Microsystems, Inc. | System and method for generating trusted, architecture specific, compiled versions of architecture neutral programs |
US6209029B1 (en) * | 1998-05-12 | 2001-03-27 | Silverstream Software, Inc. | Method and apparatus for accessing data sources in a three tier environment |
US20020104071A1 (en) * | 1999-10-05 | 2002-08-01 | Dietrich Charisius | Methods and systems for supporting and deploying distributed computing components |
US20040205696A1 (en) * | 2001-03-12 | 2004-10-14 | International Business Machines Corporation | Framework for code generators |
US8352903B1 (en) * | 2010-08-20 | 2013-01-08 | Google Inc. | Interaction with partially constructed mobile device applications |
US20130187926A1 (en) * | 2011-07-08 | 2013-07-25 | Steamfunk Labs, Inc. | Automated presentation of information using infographics |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10455002B2 (en) * | 2015-10-29 | 2019-10-22 | Tharmalingam Satkunarajah | Apparatus and method for generating customizable software based networking platforms |
CN106354542A (en) * | 2016-08-27 | 2017-01-25 | 乐视控股(北京)有限公司 | Method and device for generating application |
US10922059B2 (en) * | 2017-01-27 | 2021-02-16 | Oracle International Corporation | Integrating application features into a platform interface based on application metadata |
US20180267781A1 (en) * | 2017-03-20 | 2018-09-20 | Coursera Inc. | Code generation for isomorphic data fetching |
US10678519B2 (en) * | 2017-03-20 | 2020-06-09 | Coursera, Inc. | Code generation for isomorphic data fetching |
EP3627312A1 (en) * | 2018-09-24 | 2020-03-25 | salesforce.com, inc. | Mobile app publishing for a responsive community experience |
US11243753B2 (en) | 2018-09-24 | 2022-02-08 | Salesforce.Com, Inc. | Mobile app publishing for a responsive community experience |
CN109271148A (en) * | 2018-09-29 | 2019-01-25 | 中国建设银行股份有限公司 | A kind of mobile application generation method and device |
Also Published As
Publication number | Publication date |
---|---|
US20130262626A1 (en) | 2013-10-03 |
US8997038B2 (en) | 2015-03-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8997038B2 (en) | Systems and methods for building and deploying mobile applications | |
US20190187967A1 (en) | Generation of dynamic software models using input mapping with feature definitions | |
US8086995B2 (en) | System and method for flexible visual representation of device fonts | |
US8671387B2 (en) | Compilation and injection of scripts in a rapid application development | |
US8788955B2 (en) | Creation and configuration of compound widgets | |
US9015651B2 (en) | Gateway data distribution engine | |
US7739310B1 (en) | Extensible portlet templates | |
US20060248121A1 (en) | System and method for supporting packaging, publishing and republishing of wireless component applications | |
US20130159892A1 (en) | Non-technical creation of mobile web applications | |
US20120291011A1 (en) | User Interfaces to Assist in Creating Application Scripts | |
US20140280484A1 (en) | Dynamic Service Extension Infrastructure For Cloud Platforms | |
US20120291006A1 (en) | Development Architecture for Cloud-Based Applications | |
US10402308B2 (en) | Sandboxing for custom logic | |
Rubio | Beginning Django | |
Pialorsi | Microsoft SharePoint 2013 Developer Reference | |
Bendoraitis | Web Development with Django Cookbook | |
Swain | Tethys Platform Documentation | |
Bendoraitis | Web Development with Django Cookbook | |
Mahmoud | Developing Middleware in Java EE 8: Build robust middleware solutions using the latest technologies and trends | |
Mertic | The Definitive Guide to SugarCRM | |
Bat-Otgon | Dissertation Calculator Tool for Tracking and Managing Dissertation Progress for Graduate Students | |
Chionis | Slides: The CERN web-based slides’ maker | |
Pandian | Application Development Language v1. 2 | |
Kumar et al. | Beginning Oracle WebCenter Portal 12c: Build Next-generation Enterprise Portals with Oracle WebCenter Portal | |
Kumar et al. | Content Integration |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: ANYPRESENCE, INC., VIRGINIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:BOZEK, JEFF;MENDIS, RICHARD;RAO, RAKESH;AND OTHERS;REEL/FRAME:035840/0051 Effective date: 20130214 |
|
AS | Assignment |
Owner name: SILICON VALLEY BANK, CALIFORNIA Free format text: SECURITY INTEREST;ASSIGNOR:ANYPRESENCE, INC.;REEL/FRAME:039939/0988 Effective date: 20160907 |
|
AS | Assignment |
Owner name: NANOSCALE, INC., VIRGINIA Free format text: CHANGE OF NAME;ASSIGNOR:ANYPRESENCE, INC.;REEL/FRAME:040107/0872 Effective date: 20160909 |
|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |