# US 9,436,507 B2 · Composing and executing workflows made up of functional pluggable building blocks

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

- Number: US 9,436,507 B2
- Document ID: US9436507B2
- Status: Granted
- Kind: B2
- Application number: 14/576,256
- Filed: 2014-12-19
- Published: 2016-01-14
- Granted: 2016-09-06
- Earliest claimed: 2014-07-12
- Assignees: Microsoft Technology Licensing, LLC
- Applicants: Microsoft Technology Licensing, LLC
- Inventors: Debi Mishra; Parry Husbands; Sudarshan Raghunathan; Andy Linfoot; Damon Hachmeister
- Web page: https://patentgrep.com/patent/US9436507B2

## CPC

- G06F 9/4881: {Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues}
- G06F 8/34: Graphical or visual programming
- G06N 20/00: Machine learning
- G06Q 10/06: Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- G06N: COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06Q: INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR

## Abstract

A platform that provides a way to automatically compose and execute even complex workflows without writing code is described. A set of pre-built functional building blocks can be provided. The building blocks perform data transformation and machine learning functions. The functional blocks have well known plug types. The building blocks can be composed build complex compositions. Input and output files are converted to a standard data type so that modules are pluggable.

## Claims

### Claim 1

A system comprising:
at least one processor:
a memory connected to the at least one processor; and
at least one program module loaded into the memory, the at least one program module providing automatic interoperability between a plurality of pluggable functional building blocks comprising at least a first pluggable functional building block and a second pluggable functional building block of a workflow by:
receiving an indication of input data and a data transformation instruction, wherein at least one of the plurality of plurality of pluggable functional building blocks comprises a data transformation to be applied to the input data; and
utilizing the input data and the data transformation instruction, executing the second pluggable functional building block of the plurality of pluggable functional building blocks in a runtime container wherein the runtime container automatically transforms output produced by the first pluggable functional building block into input acceptable by the second pluggable functional building block.

### Claim 2 (depends on 1)

The system of claim 1, further comprising:
a second program module loaded into the memory, wherein the second program module comprises a bridge that uses a standardized workflow interface for communication between the second pluggable functional building block and the first pluggable functional building block.

### Claim 3 (depends on 1)

The system of claim 1, further comprising:
a second program module loaded into the memory, wherein the second program module comprises a bridge that automatically converts between a workflow interface associated with the first pluggable functional building block to a workflow interface associated with the second pluggable functional building block.

### Claim 4 (depends on 1)

The system of claim 1, further comprising:
a second program module loaded into the memory, wherein the second program module comprises a bridge that automatically converts between a schema associated with the first pluggable functional building block to a schema associated with the second pluggable functional building block.

### Claim 5 (depends on 1)

The system of claim 1, further comprising:
a second program module loaded into the memory, wherein the second program module comprises a bridge that automatically converts between a data format associated with the first pluggable functional building block to a data format associated with the second pluggable functional building block.

### Claim 6 (depends on 1)

The system of claim 1, further comprising:
a second program module loaded into the memory, wherein the second program module comprises a bridge that converts a file produced by the first pluggable functional building block into an object acceptable by a pluggable module of the second functional building block.

### Claim 7 (depends on 1)

The system of claim 1, further comprising:
a second program module loaded into the memory, wherein the second program module comprises a bridge that serializes an object produced by the first functional building block into a file acceptable by a pluggable module of the second pluggable functional building block.

### Claim 8

A method comprising:
providing by a processor of a computing device, automatic interoperability between a plurality of pluggable functional building blocks comprising at least a second pluggable functional building block and a first pluggable functional building block of a workflow by:
receiving an indication of input data and a data transformation instruction, wherein at least one of the plurality of plurality of pluggable functional building blocks comprises a data transformation to be applied to the input data; and
utilizing the input data and the data transformation instruction, executing the second pluggable functional building block of the plurality of pluggable functional building blocks in a runtime container wherein the runtime container automatically transforms output produced by the first pluggable functional building block into input acceptable by the second pluggable functional building block.

### Claim 9 (depends on 8)

The method of claim 8, further comprising:
using a standardized workflow interface for communication between the second pluggable functional building block and the first pluggable functional building block.

### Claim 10 (depends on 8)

The method of claim 8, further comprising:
automatically converting between a workflow interface associated with the first pluggable functional building block to a workflow interface associated with the second pluggable functional building block.

### Claim 11 (depends on 8)

The method of claim 8, further comprising:
automatically converting between a data format associated with the first pluggable functional building block to a data format associated with the second pluggable functional building block.

### Claim 12 (depends on 8)

The method of claim 8, further comprising:
converting a file produced by the first pluggable functional building block into an object acceptable by a pluggable module of the second pluggable functional building block.

### Claim 13 (depends on 8)

The method of claim 8, further comprising:
serializing an object produced by the second pluggable functional building block into a file acceptable by a pluggable module of the first pluggable functional building block.

### Claim 14

A machine-readable storage medium comprising computer-readable instructions which when executed cause at least one processor of a computing device to:
provide a plurality of pluggable functional building blocks, wherein a second pluggable functional building block of the plurality of pluggable functional building blocks is a building block that is automatically interoperable with a first pluggable functional building block;
receive an indication of input data and a data transformation instruction, wherein at least one of the plurality of plurality of pluggable functional building blocks comprises a data transformation to be applied to the input data; and
in response to receiving a selection of at least two of the plurality of pluggable functional building blocks and a connection indication between the at least two of the plurality of functional building blocks, automatically compose a workflow comprising the first pluggable functional building block and the second pluggable functional building block, wherein the output of the first pluggable functional building block is automatically transformed into acceptable input for the second pluggable functional building block when the workflow is executed utilizing the input data and the data transformation instruction.

### Claim 15 (depends on 14)

The machine-readable storage medium of claim 14, comprising further computer-readable instructions which when executed cause the at least one processor to:
use a standardized workflow interface for communication between the first pluggable functional building block and the second pluggable functional building block.

### Claim 16 (depends on 14)

The machine-readable storage medium of claim 14, comprising further computer-readable instructions which when executed cause the at least one processor to:
automatically convert between a workflow interface associated with the first pluggable functional building block to a workflow interface associated with the second pluggable functional building block.

### Claim 17 (depends on 14)

The machine-readable storage medium of claim 14, comprising further computer-readable instructions which when executed cause the at least one processor to:
convert between a schema associated with the first pluggable functional building block to a schema associated with the second pluggable functional building block.

### Claim 18 (depends on 14)

The machine-readable storage medium of claim 14, comprising further computer-readable instructions which when executed cause the at least one processor to:
automatically convert between a data format associated with the first pluggable functional building block to a data format associated with the second pluggable functional building block.

### Claim 19 (depends on 14)

The machine-readable storage medium of claim 14, comprising further computer-readable instructions which when executed cause the at least one processor to:
automatically convert a file produced by the first pluggable functional building block into an object acceptable by a pluggable module of the second pluggable functional building block.

### Claim 20 (depends on 14)

The machine-readable storage medium of claim 14, comprising further computer-readable instructions which when executed cause the at least one processor to:
automatically publish the workflow as a web service.
