IP Library Granted Patent US 10,838,698
Granted Patent B2
US 10,838,698 · App. 16/139,540 · Granted Nov 17, 2020

Providing a reuse capability for visual programming logic within a building tool

Inventors: Rahmaan Lodhia (Johns Creek, GA); Jeffrey Geiger (Denver, CO); Michael Diffenderfer (Atlanta, GA)
Assignee: salesforce.com, inc.
G06F8/36G06F8/34G06F8/433G06F16/9024
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 10,838,698
App. No.
16/139,540
Granted
Nov 17, 2020
Kind
B2
Abstract

Described is a mechanism that provides the ability to reuse a portion of visual programming logic within an automation building tool. The programming logic may be represented as a directed acyclic graph (DAG) such that the nodes of the graph correspond to various operations and the edges of the graph correspond to the logic flow of the program. The mechanism may provide a new capability to reuse portions of the visual programming logic while adhering to the requirements of a DAG structure. For example, a user may copy a valid substructure of visual programming logic upon a validation the programming logic may be inserted into another portion of the DAG. Accordingly, the mechanism provides an efficient and user-friendly mechanism to reuse a portion of visual programming logic within an automation building tool.

Claims (64)

1. A system comprising: one or more processors; and

a non-transitory computer readable medium storing a plurality of instructions, which when executed, cause the one or more processors to:

create, within a visual interface of an automation building tool, visual programming logic for a program, the visual programming logic represented as a directed acyclic graph (DAG) including a plurality of nodes, each node representing an operation to be performed by the program, the nodes being coupled together by edges to form a logical workflow, the visual programming logic being created in response to user selections of the nodes and edges;

receive, via the visual interface of the automation building tool, a first user input and a second user input, each input selecting an option displayed within the DAG to select one or more nodes of the DAG;

determine, in response to each user input, whether a combination of the selected nodes comprises a valid portion of reusable programming logic, the combination comprising all selected nodes of the DAG, and where validity of the combination is automatically determined based on applying a rule to the combination of selected nodes;

enable an interactive option to copy the combination of selected nodes of the program on the visual interface only in response to determining that the combination of selected nodes is valid based on the applied rule;

receive, via the automation building tool, a third user input on the visual interface selecting the enabled option to copy the selected nodes; and store the selected nodes as a first reusable portion of programming logic.

2. The system of claim 1 , the plurality of instructions when executed further causing the one or more processors to:

switch the automation building tool from a build-mode to a select-mode, the build-mode allowing the user to at least add or delete operations, and the select-mode limiting the user to only select one or more operations in response to the first user input; and

switch the automation building tool from the select-mode back to the build-mode in response to the third user input.

3. The system of claim 1 , the plurality of instructions when executed further causing the one or more processors to:

receive, via the automation building tool, a fourth user input selecting an option to insert an element into the program at an insertion point within the DAG; and

insert the stored first reusable portion of programming logic at the insertion point within the DAG in response to receiving a fifth user input selecting the stored first reusable programming logic.

4. The system of claim 3 , the plurality of instructions when executed further causing the one or more processors to:

provide, in response to the fourth user input, a first list of elements to add to the program at the insertion point, the first list of elements including one or more operations and an option to paste a copied portion of programming logic; and

cause a second list of stored reusable programming logic including the first reusable programming logic to be displayed in response to receiving a sixth user input selecting the option to paste the copied portion of programming logic.

5. The system of claim 1 , wherein

rule is based on an entry path or an exit path of the combination of the selected nodes.

6. The system of claim 5 , wherein the applying the rule based on the entry path or the exit path includes:

determining that the combination of the selected nodes includes a single entry path and a single exit path within the DAG.

7. The system of claim 5 , wherein the applying the rule based on the entry path or the exit path includes:

determining that the combination of the selected nodes includes a single exit path within the DAG.

8. The system of claim 1 , wherein the applying the rule includes:

determining at least a first operation and a second operation of the selected nodes are disconnected; and

determining a current selection of the nodes comprises an invalid portion of reusable programming logic in response to determining at least the first operation and the second operation of the selected nodes are disconnected.

9. The system of claim 8 , further comprising:

disabling, or maintaining as disabled, the option to copy the selected one or more operations of the program in response to determining the current selection of the nodes comprises the invalid portion of reusable programming logic.

10. The system of claim 1 , wherein storing the selected nodes as a first reusable portion of programming logic includes:

removing one or more parameters associated with the selected nodes.

11. The system of claim 1 , wherein the one or more operations of the program perform an automated email marketing procedure.

12. The system of claim 1 , wherein the one or more operations include one or more of a start operation, action operation, trigger operation, rule operation, and an end operation.

13. A computer program product comprising computer-readable program code to be executed by one or more processors when retrieved from a non-transitory computer-readable medium, the program code including instructions to:

create, by a visual interface of an automation building tool, visual programming logic for a program, the visual programming logic represented as a directed acyclic graph (DAG) including a plurality of nodes, each node representing an operation to be performed by the program, the nodes being coupled together by edges to form a logical workflow, the visual programming logic being created in response to user selections of the nodes and edges;

receive, by the visual interface of the automation building tool, a first user input and a second user input, each input selecting an option displayed within the DAG to select one or more nodes of the DAG;

determine, by the automation building tool, in response to each user input, whether a combination of the selected nodes comprises a valid portion of reusable programming logic, the combination comprising all selected nodes of the DAG, and where validity of the combination is automatically determined based on applying a rule to the combination of selected nodes;

enable, by the automation building tool, an interactive option to copy the combination of selected nodes of the program on the visual interface only in response to determining that the combination of selected nodes is valid based on the applied rule;

receive, by the automation building tool, a third user input on the visual interface selecting the enabled option to copy the selected nodes; and

store, by the automation building tool, the selected nodes as a first reusable portion of programming logic.

14. The computer program product of claim 13 , wherein the program code includes further instructions to:

switch the building tool from a build-mode to a select-mode in response to the first user input, the build-mode allowing the user to at least add or delete operations, and the select-mode limiting the user to only select one or more operations; and

switch the building tool from the select-mode back to the build-mode in response to the third user input.

15. The computer program product of claim 13 , wherein the program code includes further instructions to:

receive a fourth user input selecting an option to insert an element into the program at an insertion point within the DAG; and

insert the stored first reusable portion of programming logic at the insertion point within the DAG in response to receiving a fifth user input selecting the stored first reusable programming logic.

16. The computer program product of claim 15 , wherein the program code includes further instructions to:

provide, in response to the fourth user input, a first list of elements to add to the program at the insertion point, the first list of elements including one or more operations and an option to paste a copied portion of programming logic; and

cause a second list of stored reusable programming logic including the first reusable programming logic to be displayed in response to receiving a sixth user input selecting the option to paste the copied portion of programming logic.

17. A method comprising:

creating, by a visual interface of an automation building tool, visual programming logic for a program, the visual programming logic represented as a directed acyclic graph (DAG) including a plurality of nodes, each node representing an operation to be performed by the system, the nodes being coupled together by edges to form a logical workflow, the visual programming logic being created in response to user selections of the nodes and edges;

receiving, by the visual interface of the automation building tool, a first user input and a second user input, each input selecting an option displayed within the DAG to select one or more nodes of the DAG;

providing, in response to each user input, an indication displayed on the DAG that the one or more operations of the program has been selected;

determining, by the automation building tool, in response to each user input, whether a combination of the selected nodes comprises a valid portion of reusable programming logic, the combination comprising all selected nodes of the DAG, and where validity of the combination is automatically determined based on applying a rule to the combination of selected nodes;

enabling, by the automation building tool, an interactive option to copy the combination of selected nodes of the program on the visual interface only in response to determining that the combination of selected nodes is valid based on the applied rule;

receiving, by the automation building tool, a third user input on the visual interface selecting the enabled option to copy the selected nodes; and

storing, by the automation building tool, the selected nodes as a first reusable portion of programming logic.

18. The method of claim 17 , further comprising:

switching the building tool from a build-mode to a select-mode in response to the first user input, the build-mode allowing the user to at least add or delete operations, and the select-mode limiting the user to only select one or more operations; and

switching the building tool from the select-mode back to the build-mode in response to the third user input.

19. The method of claim 17 , further comprising:

receiving, via the building tool, a fourth user input selecting an option to insert an element into the program at an insertion point within the DAG; and

inserting the stored first reusable portion of programming logic at the insertion point within the DAG in response to receiving a fifth user input selecting the stored first reusable programming logic.

20. The method of claim 19 , the operations further comprising:

providing a first list of elements to add to the program at the insertion point in response to the fourth user input, the first list of elements including one or more operations and an option to paste a copied portion of programming logic; and

causing a second list of stored reusable programming logic including the first reusable programming logic to be displayed in response to receiving a sixth user input selecting the option to paste the copied portion of programming logic.

Assignments (2)
CHANGE OF NAME Recorded Sep 20, 2023
From: SALESFORCE.COM, INC.
To: SALESFORCE, INC.
Reel/Frame 064975/0956 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 24, 2018
From: LODHIA, RAHMAAN; GEIGER, JEFFREY; DIFFENDERFER, MICHAEL
To: SALESFORCE.COM, INC.
Reel/Frame 046951/0089 →
Continuity (1)
Related Publication 20200097262A1 · Mar 26, 2020
Cited By (1)
US 12,340,187