IP Library Granted Patent US 11,630,648
Granted Patent B2
US 11,630,648 · App. 17/484,084 · Granted Apr 18, 2023

Generation of application based on declarative specification

Inventor: Alasdair Lampon-Monk (London, GB)
Assignee: Salesforce, Inc.
G06F8/35G06F8/10G06F8/24G06F8/33G06F9/548
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,630,648
App. No.
17/484,084
Granted
Apr 18, 2023
Kind
B2
Abstract

An application development environment generates applications from declarative specification for the application. The declarative specification describes one or more object types and references to objects of each object type. The application development environment generates instructions (or code) from the declarative specification to generate an initial version of the application. The application development environment iteratively builds the application based on user interactions that modify the declarative specification. The application development environment modifies the instructions for the application to match the modified declarative specification. The final version of the application may be deployed on a production system.

Claims (61)

1. A computer-implemented method for generating an application from a declarative specification, the computer-implemented method comprising:

receiving the declarative specification comprising a description of an object type, and one or more references to objects of the object type;

generating an initial version of the application from the declarative specification comprising, a set of instructions for configuring a user interface for inputting or displaying objects of the object type;

executing the set of instructions for the application; and

iteratively building the application, each iteration comprising:

receiving a modification to the declarative specification including a modified version of the object type;

modifying the set of instructions for the application to obtain a modified set of instructions configured to generate a modified user interface to match the modified version of the object type; and

executing the modified set of instructions to display the modified user interface.

2. The computer-implemented method of claim 1 , wherein executing the modified set of instructions to display the modified user interface comprises:

receiving an input at a displayed input field corresponding to an object of the object type; and

updating a record in a database connected to the application in response to the input.

3. The computer-implemented method of claim 1 , wherein iteratively building the application is performed using a staging server, further comprising:

deploying a final version of the application on a production system based on a final modified specification obtained from a final iteration.

4. The computer-implemented method of claim 1 , wherein iteratively building the application is performed via a user interface of a development environment, comprising:

a first portion of the user interface for modifying the declarative specification of the application; and

a second portion of the user interface for executing the application corresponding to the declarative specification.

5. The computer-implemented method of claim 1 , wherein the declarative specification includes a data entry command for an object, the computer-implemented method comprising:

generating instructions for data entry of a field of the object for inputting via the user interface of the application.

6. The computer-implemented method of claim 1 , wherein the application is a first application and wherein the declarative specification describes a second application, wherein the set of instructions cause objects of the object type to be synchronized with data of the second application.

7. The computer-implemented method of claim 1 , wherein a reference to the object type is associated with a data entry element for data entry of objects of the object type, wherein the object type is a first object type, wherein an attribute of the object type is an instance of a second object type, wherein the data entry element for data entry of objects of the first object type is configured to:

access a set of objects of the second object type from a database connected to the application and display a list, and

allow a user to select an element from the set of objects.

8. The computer-implemented method of claim 1 , wherein a reference to the object type is associated with a data entry element for data entry of objects of the object type, wherein the declarative specification identifies an application programming interface (API), wherein the data entry element for data entry of objects of the object type is associated with an invocation of the API, wherein the user interface of the application is configured to provide data input to fields of the user interface as parameters to an invocation of the API.

9. The computer-implemented method of claim 1 , wherein a reference to the object type is associated with a display element for display of objects of the object type, wherein the declarative specification identifies an application programming interface (API), wherein the display element of objects of the object type specifies an invocation of the API, such that a display field corresponding to an attribute of the object type obtains value by invoking the API.

10. A non-transitory computer readable storage medium storing instructions that when executed by a computer processor cause the computer processor to execute steps for generating an application from a declarative specification, the steps comprising:

receiving the declarative specification comprising a description of an object type, and one or more references to objects of the object type;

generating an initial version of the application from the declarative specification comprising, a set of instructions for configuring a user interface for inputting or displaying objects of the object type;

executing the set of instructions for the application; and

iteratively building the application, each iteration comprising:

receiving a modification to the declarative specification including a modified version of the object type;

modifying the set of instructions for the application to obtain a modified set of instructions configured to generate a modified user interface to match the modified version of the object type; and

executing the modified set of instructions to display the modified user interface.

11. The non-transitory computer readable storage medium of claim 10 , wherein executing the modified set of instructions to display a modified user interface comprises steps comprising:

receiving an input at a displayed input field corresponding to an object of the object type; and

updating a record in a database connected to the application in response to the input.

12. The non-transitory computer readable storage medium of claim 10 , wherein iteratively building the application is performed using a staging server, comprising:

deploying a final version of the application on a production system based on a modified specification obtained from a final iteration.

13. The non-transitory computer readable storage medium of claim 10 , wherein iteratively building the application is performed via a user interface of a development environment, the user interface comprising:

a first portion of the user interface for modifying the declarative specification of the application; and

a second portion of the user interface for executing the application corresponding to the declarative specification.

14. The non-transitory computer readable storage medium of claim 10 , wherein the declarative specification includes a data entry command for an object, the instructions further causing the computer processor to perform steps comprising:

generating instructions for data entry of a field of the object for inputting via the user interface of the application.

15. The non-transitory computer readable storage medium of claim 10 , wherein the application is a first application and wherein the declarative specification describes a second application, wherein the set of instructions cause objects of the object type to be synchronized with data of the second application.

16. The non-transitory computer readable storage medium of claim 10 , wherein a reference to the object type is associated with a data entry element for data entry of objects of the object type, wherein the object type is a first object type, wherein an attribute of the object type is an instance of a second object type, wherein the data entry element for data entry of objects of the first object type is configured to:

access a set of objects of the second object type from a database connected to the application and display a list, and

allow a user to select an element from the set of objects.

17. The non-transitory computer readable storage medium of claim 10 , wherein a reference to the object type is associated with a data entry element for data entry of objects of the object type, wherein the declarative specification identifies an application programming interface (API), wherein the data entry element for data entry of objects of the object type is associated with an invocation of the API, wherein the user interface of the application is configured to provide data input to fields of the user interface as parameters to an invocation of the API.

18. The non-transitory computer readable storage medium of claim 10 , wherein a reference to the object type is associated with a display element for display of objects of the object type, wherein the declarative specification identifies an application programming interface (API), wherein the display element for display of objects of the object type specifies an invocation of the API, such that a display field corresponding to an attribute of the object type obtains value by invoking the API.

19. A computer system comprising:

a computer processor; and

a non-transitory computer readable storage medium storing instructions that when executed by a computer processor cause the computer processor to execute steps for generating an application from a declarative specification, the steps comprising:

receiving the declarative specification comprising a description of an object type, and one or more references to objects of the object type;

generating an initial version of the application from the declarative specification comprising, a set of instructions for configuring a user interface for inputting or displaying objects of the object type;

executing the set of instructions for the application; and

iteratively building the application, each iteration comprising:

receiving a modification to the declarative specification including a modified version of the object type;

modifying a set of instructions for the application to obtain a modified set of instructions configured to generate a modified user interface to match the modified version of the object type; and

executing the modified set of instructions to display the modified user interface.

20. The computer system of claim 19 , wherein iteratively building the application is performed via a user interface of a development environment, the user interface comprising:

a first portion of the user interface for modifying the declarative specification of the application; and

a second portion of the user interface for executing the application corresponding to the declarative specification.

Assignments (2)
CHANGE OF NAME Recorded Dec 18, 2024
From: SALESFORCE.COM, INC.
To: SALESFORCE, INC.
Reel/Frame 069717/0571 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 23, 2022
From: LAMPON-MONK, ALASDAIR
To: SALESFORCE.COM, INC.
Reel/Frame 059381/0806 →