IP Library Granted Patent US 10,817,266
Granted Patent B2
US 10,817,266 · App. 16/141,405 · Granted Oct 27, 2020

Converting a captured image to visual programming logic for an automation building tool

Inventors: Rahmaan Lodhia (Johns Creek, GA); Jeffrey Geiger (Denver, CO); Michael Diffenderfer (Atlanta, GA)
Assignee: salesforce.com, inc.
G06F8/34G06N20/00
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,817,266
App. No.
16/141,405
Granted
Oct 27, 2020
Kind
B2
Abstract

Described is a mechanism that converts a captured image (e.g. hand drawn image) of a process flow diagram into visual programming logic. The mechanism may analyze the image using a machine learning component to recognize various shapes within the image that correspond to various operations (e.g. nodes of a graph). The mechanism may then determine a process flow within the image (e.g. edges of a graph) based on the position of each shape relative to a top-most shape. The recognized operations and process flow may then be automatically provided to the building tool. The building tool may then display the process flow diagram as visual programming logic for an executable program. Accordingly, the mechanism provides the ability for a user to conveniently create programming logic and forego the process of building a program using only programming code or visual tools.

Claims (51)

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:

receive, by the system and within an automation building tool that is used to create a program, an image of a hand-drawn process flow diagram, the process flow diagram including a plurality of nodes not having a connection between each of the plurality of nodes, each node representing an operation to be performed by a program;

traverse through one or more portions of the process flow diagram starting from a top of the process flow diagram to a bottom of the process flow diagram;

determine a shape of each node detected in the process flow diagram, the shape of each node corresponding to an operation;

identify a topmost shape within each portion and one or more shapes within a predefined proximity to the topmost shape within each portion;

determine whether the shape of a node corresponds to a trigger operation and whether there is more than one lower shape in the hand-drawn process flow diagram proximate to the node corresponding to the trigger operation that correspond to the branches of the trigger operation;

create edges between the topmost shape and the one or more proximate shapes within each portion, based on a position of each proximate shape relative to the topmost shape; and

determine the logic flow of the operations based on the created edges between the determined shapes of the process flow diagram; and

cause, within the automation building tool, the determined operations and logic flow to be displayed as visual programming logic for the program, the visual programming logic represented as a directed acyclic graph (DAG).

2. The system of claim 1 , wherein the image of the hand-drawn process flow diagram is provided as an image file uploaded from a user system.

3. The system of claim 1 , wherein the shape of each node is determined by selecting a shape that most closely matches a shape from a predefined set of shapes, the predefined set of shapes includes a unique shape for a predefined set of operations available within the automation building tool.

4. The system of claim 3 , wherein the predefined set of operations available within the automation building tool includes at least a start operation, an end operation, an action operation, the trigger operation, and a rule operation.

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

receive, within the automation building tool, a selection to import the image into the program, the selection specifying an insertion point to insert the visual programming logic within the DAG.

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

verify the determined operations and logic flow satisfy one or more rules for inserting the visual programming logic within the DAG at the specified insertion point.

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

receive a set of training data including one or more labeled shapes; and

train a machine learning component to classify images based on the training data.

8. A computer program product comprising a non-transitory computer-readable medium having a computer readable program code embodied therein to be executed by one or more processors, the program code including instructions to:

receive, by the system and within an automation building tool that is used to create a program, an image of a hand-drawn process flow diagram, the process flow diagram including a plurality of nodes not having a connection between each of the plurality of nodes, each node representing an operation to be performed by a program;

traverse through one or more portions of the process flow diagram starting from a top of the process flow diagram to a bottom of the process flow diagram;

determine a shape of each node detected in the process flow diagram, the shape of each node corresponding to an operation;

identify a topmost shape within each portion and one or more shapes within a predefined proximity to the topmost shape within each portion;

determine whether the shape of a node corresponds to a trigger operation and whether there is more than one lower shape in the hand-drawn process flow diagram proximate to the node corresponding to the trigger operation that correspond to the branches of the trigger operation;

create edges between the topmost shape and the one or more proximate shapes within each portion, based on a position of each proximate shape relative to the topmost shape; and

determine the logic flow of the operations based on the created edges between the determined shapes of the process flow diagram; and

cause, within the automation building tool, the determined operations and logic flow to be displayed as visual programming logic for the program, the visual programming logic represented as a directed acyclic graph (DAG).

9. The computer program product of claim 8 , wherein the shape of each node is determined by selecting a shape that most closely matches a shape from a predefined set of shapes, the predefined set of shapes includes a unique shape for a predefined set of operations available within the automation building tool.

10. The computer program product of claim 9 , wherein the predefined set of operations available within the automation building tool includes at least a start operation, an end operation, an action operation, the trigger operation, and a rule operation.

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

receive, within the automation building tool, a selection to import the image into the program, the selection specifying an insertion point to insert the visual programming logic within the DAG.

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

verify the determined operations and logic flow satisfy one or more rules for inserting the visual programming logic within the DAG at the specified insertion point.

13. A method comprising:

receiving, by the system and within an automation building tool that is used to create a program, an image of a hand-drawn process flow diagram, the process flow diagram including a plurality of nodes not having a connection between each of the plurality of nodes, each node representing an operation to be performed by a program;

traversing through one or more portions of the process flow diagram starting from a top of the process flow diagram to a bottom of the process flow diagram;

determining a shape of each node detected in the process flow diagram, the shape of each node corresponding to an operation;

identifying a topmost shape within each portion and one or more shapes within a predefined proximity to the topmost shape within each portion;

determining whether the shape of a node corresponds to a trigger operation and whether there is more than one lower shape in the hand-drawn process flow diagram proximate to the node corresponding to the trigger operation that correspond to the branches of the trigger operation;

creating edges between the topmost shape and the one or more proximate shapes within each portion, based on a position of each proximate shape relative to the topmost shape; and

determining the logic flow of the operations based on the created edges between the determined shapes of the process flow diagram; and

causing, within the automation building tool, the determined operations and logic flow to be displayed as visual programming logic for the program, the visual programming logic represented as a directed acyclic graph (DAG).

14. The method of claim 13 , wherein the shape of each node is determined by selecting a shape that most closely matches a shape from a predefined set of shapes, the predefined set of shapes includes a unique shape for a predefined set of operations available within the automation building tool.

15. The method of claim 14 , wherein the predefined set of operations available within the automation building tool includes at least a start operation, an end operation, an action operation, the trigger operation, and a rule operation.

16. The method of claim 13 , further comprising:

receiving, within the automation building tool, a selection to import the image into the program, the selection specifying an insertion point to insert the visual programming logic within the DAG.

17. The method of claim 16 , further comprising:

verifying the determined operations and logic flow satisfy one or more rules for inserting the visual programming logic within the DAG at the specified insertion point.

Assignments (3)
CHANGE OF NAME Recorded Sep 20, 2023
From: SALESFORCE.COM, INC.
To: SALESFORCE, INC.
Reel/Frame 064975/0956 →
CORRECTIVE ASSIGNMENT TO CORRECT THE INVENTORSHIP PREVIOUSLY RECORDED ON REEL 046967 FRAME 0368. ASSIGNOR(S) HEREBY CONFIRMS THE ADDITION OF CONVEYING PARTY, MICHAEL DIFFENDERFER, WAS INCLUDED ON THE ORIGINAL ASSIGNMENT RECORDED.. Recorded Sep 27, 2018
From: LODHIA, RAHMAAN; GEIGER, JEFFREY; DIFFENDERFER, MICHAEL
To: SALESFORCE.COM, INC.
Reel/Frame 047642/0969 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 25, 2018
From: LODHIA, RAHMAAN; GEIGER, JEFFREY
To: SALESFORCE.COM, INC.
Reel/Frame 046967/0368 →
Continuity (1)
Related Publication 20200097263A1 · Mar 26, 2020