# US 10,481,875 B2 · Generation of an application from template

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 10,481,875 B2
- Document ID: US10481875B2
- Status: Granted
- Kind: B2
- Application number: 15/855,405
- Filed: 2017-12-27
- Published: 2018-06-28
- Granted: 2019-11-19
- Earliest claimed: 2015-11-09
- Assignees: Microsoft Technology Licensing, LLC
- Applicants: Microsoft Technology Licensing, LLC
- Inventors: Barath Balasubramanian; Evan Bjorn-Thomas Cohen; Olivier Colle; William James Staples
- Web page: https://patentgrep.com/patent/US10481875B2

## CPC

- G06F 8/20: Software design
- G06F 3/0482: Interaction with lists of selectable items, e.g. menus
- G06F 3/04842: Selection of displayed objects or displayed text elements (G06F3/0482 takes precedence)
- G06F 8/30: Creation or generation of source code
- G06F 8/34: Graphical or visual programming
- G06F 9/5072: {Grid computing}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Examples of the disclosure provide for receiving a template at a design surface, the template representing a visual layout, logic, and data schema for an application. Received source data is bound to the template based on the data schema. At least one data storage location is selected from identified data storage locations. Based on the selection of the one data storage location, at least a portion of the source data is extracted and sent to the data storage location for storage. The extracted data is rewired to bind the extracted data at the data storage location to the template such that access of the application generated using the template provides access to the extracted data at the data storage location.

## Claims

### Claim 1

A method for generating an application in a developer environment, the method comprising:
receiving a selection of a template at a design surface, the template including a data schema;
receiving a set of data for the selected template;
binding the set of data to the selected template based on the data schema;
identifying at least a portion of the set of data for extraction, the identified portion comprising dynamic data;
identifying one or more available data storage locations based on a user profile;
providing the one or more available data storage locations as a connections list;
determining, based at least on user input, a storage location for the identified portion of the set of data, the user input including a selection of a location from the connections list, the selected location used as the determined storage location;
extracting the identified portion of the set of data;
storing the extracted data at the determined storage location; and
binding the extracted data at the storage location to the template, such that access to the template provides access to the extracted data at the storage location.

### Claim 2 (depends on 1)

The method of claim 1, wherein identifying the portion of the set of data for extraction further comprises:
identifying one or more data types from the set of data, the one or more data types including at least one of the dynamic data, local data, or remote data.

### Claim 3 (depends on 1)

The method of claim 1, wherein identifying the portion of the set of data for extraction further comprises:
identifying the dynamic data based on rules associated with the data schema.

### Claim 4 (depends on 1)

The method of claim 1, wherein the portion of the set of data for extraction is identified based at least in part on telemetry data.

### Claim 5 (depends on 1)

The method of claim 1, further comprising:
receiving the determined storage location for the identified portion of the set of data;
identifying one or more other locations for data storage;
providing the determined storage location and the one or more other locations as a connections list;
receiving a selection of a first location for a first subset of the identified portion of the set of data;
receiving another selection of a second location for a second subset of the identified portion of the set of data; and
storing the first subset at the first location and the second subset at the second location.

### Claim 6 (depends on 1)

The method of claim 1, wherein providing the one or more locations as the connections list further comprises:
identifying a default location from the one or more locations based at least in part on a set of policies; and
providing the default location as a suggested location in the connections list.

### Claim 7

A system for generating an application, the system comprising:
a developer environment, implemented on a processor, configured to receive a template and source data, the template including a data schema;
a data binding mechanism, coupled to the developer environment, configured to bind the source data to the template based on the data schema and a set of policies;
a data storage location mechanism, coupled to the developer environment, configured to identify one or more data storage locations; and
a data extraction mechanism, coupled to the developer environment, configured to
identify at least a portion of the source data to extract from the template based on one or more determined data types of one or more subsets of the source data, the data types include at least one of local data, dynamic data, and remote data;
determine at least one data storage location of the identified one or more data storage locations for storage of the extracted portion of the source data based at least on user input and on the determined data types;
store the extracted portion of the source data to the at least one determined data storage location, the data binding mechanism re-binding the extracted portion of the source data stored at the at least one determined data storage location to the template;
identify at least another portion of the source data as the remote data stored at a remote location; and
maintain the storage of the remote data at the remote location, the generated application providing authorized users access to the remote data at the remote location and denying unauthorized users access to the remote data.

### Claim 8 (depends on 7)

The system of claim 7, wherein the data storage location mechanism provides the one or more identified data storage locations as a connections list to the developer environment.

### Claim 9 (depends on 8)

The system of claim 8, wherein the data storage location mechanism identifies a default storage location from the one or more identified data storage locations and provides the default storage location as a suggested storage location in the connections list.

### Claim 10 (depends on 7)

The system of claim 7, further comprising:
a template library including a number of templates, an individual template of the number of templates comprising a document and a corresponding data schema.

### Claim 11 (depends on 7)

The system of claim 7, wherein the identified portion of the source data to extract is identified based at least in part on telemetry data.

### Claim 12 (depends on 7)

The system of claim 7, wherein the data extraction mechanism identifies at least another portion of the source data as the local data and maintains storage of the identified local data at the template.

### Claim 13 (depends on 7)

The system of claim 7, wherein the data extraction mechanism identifies at least another portion of the source data as the dynamic data based on rules associated with the data schema.

### Claim 14 (depends on 7)

The system of claim 7, wherein the data extraction mechanism identifies at least another portion of the source data as the dynamic data and extracts the dynamic data to store at a shared data storage location.

### Claim 15

One or more computer storage media having computer-executable instructions stored thereon for generating an application in a developer environment, which, on execution by a computer, cause the computer to perform operations comprising:
receiving a template and source data, the template including a data schema and a set of policies;
identifying one or more data storage locations based at least in part on user credentials;
identifying at least a portion of the source data for extraction based at least in part on a data type, the data type is at least one of local data, dynamic data, or remote data;
determining at least one data storage location of the identified one or more data storage locations for storage of the identified portion based on the data type;
extracting the identified portion based at least in part on the user credentials;
storing the extracted portion at the at least one determined data storage location; and
binding the extracted portion stored at the at least one determined data storage location to the template, wherein the local data is stored locally with the generated application, the dynamic data rebinds to the generated application regardless of the storage location of the dynamic data, and the remote data is stored at an enterprise location or public location remote from the generated application.

### Claim 16 (depends on 15)

The one or more computer storage media of claim 15, wherein the computer-executable instructions, on execution by the computer, further cause the computer to perform operations comprising:
identifying at least another portion of the source data as the dynamic data; and
extracting the dynamic data to store at a shared data storage location.

### Claim 17 (depends on 15)

The one or more computer storage media of claim 15, wherein the portion of the source data for extraction is identified based at least in part on the set of policies.

### Claim 18 (depends on 15)

The one or more computer storage media of claim 15, wherein the one or more identified storage locations are provided as a connections list to the developer environment.

### Claim 19 (depends on 18)

The one or more computer storage media of claim 18, wherein the developer environment receives a selection of at least one identified location for storage of the extracted portion of the source data as a user selection from the connections list.

### Claim 20 (depends on 18)

The one or more computer storage media of claim 18, wherein the computer-executable instructions, on execution by the computer, further cause the computer to perform operations comprising:
identifying a default storage location from the one or more identified storage locations; and
providing the default storage location as a suggested storage location in the connections list.
