# US 2013/0159970 A1 · Custom compound types in declarative programs

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

- Number: US 2013/0159970 A1
- Document ID: US20130159970A1
- Status: Published application
- Kind: A1
- Application number: 13/327,674
- Filed: 2011-12-15
- Published: 2013-06-20
- Earliest claimed: 2011-12-15
- Assignees: Microsoft Corporation
- Inventors: Leon E. Welicki; John Anthony Taylor; Clark Roberts; Kenneth David Wolf
- Web page: https://patentgrep.com/patent/US20130159970A1

## CPC

- G06F 16/185: Hierarchical storage management [HSM] systems, e.g. file migration or policies thereof (details of archiving G06F16/11)
- G06F 8/20: Software design
- G06F 8/31: {Programming languages or programming paradigms}
- G06F 8/33: Intelligent editors
- G06N 5/04: Inference or reasoning models
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- G06N: COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS

## Abstract

The present invention extends to methods, systems, and computer program products for creating and manipulating custom compound data types in declarative programs. The present invention allows a developer to create and use custom compound data types without requiring the custom type to be specifically defined (e.g. via registering a custom assembly) in the underlying framework. This is accomplished by providing a data container that is configurable to represent virtually any combination of primitive or compound types defined within the framework. The present invention also provides a declarative model for interacting with data containers representing custom compound data types. This declarative model employs a path-based syntax (or other type of syntax) for accessing the elements of a custom compound data type. Multiple paths can be defined within a single unit of developer input so that multiple elements of a custom data type can be manipulated by the single unit of input.

## Claims

### Claim 1

At a computer system including one or more processors and system memory, the computer system also including a workflow framework, a method for creating a compound data structure using a declarative language, the method comprising:
receiving developer input, at the workflow framework, that defines multiple paths and a value for each path in a declarative language, the multiple paths and corresponding values representing a compound data structure that the developer desires to create within a workflow;
interpreting, by the workflow framework, each path to create the compound data structure, wherein interpreting each path comprises:
determining a type of element to create for the path, including for at least one path, determining that an element within another compound data structure that is nested within the compound data structure is to be created for the at least one path;
creating the determined element in the compound data structure for each path, including creating, for each of the at least one path, an element within a nested compound data structure; and
for each path, assigning the corresponding value to the element created for the path.

### Claim 2 (depends on 1)

The method of claim 1, wherein the paths and corresponding values in the received developer input are arranged in a table format.

### Claim 3 (depends on 1)

The method of claim 1, wherein determining a type of element to create for the path comprises:
for at least one path, determining that an element within another compound data structure that is nested within the compound data structure is to be created for the at least one path;
and wherein creating the determined element in the compound data structure for each path comprises:
creating, for each of the at least one path, an element within a nested compound data structure.

### Claim 4 (depends on 3)

The method of claim 3, wherein the nested compound data structure is a compound object and the compound data structure is an array such that the compound object is a nested element of the array.

### Claim 5 (depends on 4)

The method of claim 4, wherein multiple paths each define an element of the array that is of a different type such that the array is polymorphic.

### Claim 6 (depends on 1)

The method of claim 1, wherein each of the at least one path, for which an element of the nested compound data structure is created, comprises a series of at least two names of elements.

### Claim 7 (depends on 1)

The method of claim 1, wherein receiving developer input comprises receiving input of a visual design element to a visual design tool of the workflow framework.

### Claim 8 (depends on 1)

The method of claim 1, wherein the compound data structure is a data structure of a type that is not a defined type in the workflow framework.

### Claim 9 (depends on 1)

The method of claim 1, wherein the workflow framework is a continuation based runtime.

### Claim 10

At a computer system including one or more processors and system memory, the computer system also including a workflow framework, a method for reading values of a compound data structure using a declarative language, the method comprising:
receiving developer input, at the workflow framework, that defines, in a declarative language, multiple paths and a workflow program location for each path, each path defining an element of a compound data structure whose value is to be bound to the corresponding workflow program location;
for each path, determining which element of the compound data structure the path refers to and reading the value of the determined element; and
reading the value of the element referred to by each path into the corresponding workflow program location, including automatically performing a type coercion on the value.

### Claim 11 (depends on 10)

The method of claim 10, wherein at least one path refers to an element of another compound data structure that is nested within the compound data structure.

### Claim 12 (depends on 11)

The method of claim 11, wherein the table is represented as a visual design element that is input to a visual design tool of the workflow framework.

### Claim 13 (depends on 10)

The method of claim 10, wherein the workflow program locations comprise variables or arguments of the workflow.

### Claim 14 (depends on 10)

The method of claim 10, wherein automatically performing a type coercion on the value comprises determining a type for the value based on the workflow program location.

### Claim 15

At a computer system including one or more processors and system memory, the computer system also including a workflow framework, a method for copying values of a compound data structure to another compound data structure using a declarative language, the method comprising:
receiving developer input, at the workflow framework, that defines, in a declarative language, multiple paths or queries to elements of a first compound data structure and corresponding multiple paths or queries to elements of a second compound data structure;
for each path or query to an element of the first compound data structure:
determining which element of the first compound data structure the path or query refers to and reading the value of the determined element; and
assigning the value of the element of the first compound data structure to an element of the second compound data structure.

### Claim 16 (depends on 15)

The method of claim 15, wherein for at least one of the paths or queries to an element of the first compound data structure, the method further comprises;
assigning the value of the element of the first compound data structure to an element of a compound data structure nested within the second compound data structure.

### Claim 17 (depends on 15)

The method of claim 15, wherein the second compound data structure does not exist prior to receiving the developer input, the method further comprising:
creating the second compound data structure, including creating an element in the second compound data structure corresponding to each of the multiple paths or queries to elements of the second compound data structure.

### Claim 18 (depends on 15)

The method of claim 15, wherein the second compound data structure exists prior to receiving the developer input, the method further comprising:
determining that at least one of the multiple paths or queries to elements of the second compound data structure represents an element that is not yet created in the second compound data structure; and
creating an element in the second compound data structure according to the at least one path or query.

### Claim 19 (depends on 15)

The method of claim 15, wherein for at least one of the multiple paths to an element of the second compound data structure, assigning the value of the element of the first compound data structure to an element of the second compound data structure further comprises performing a type coercion on the corresponding value.

### Claim 20 (depends on 15)

The method of claim 15, wherein:
the value of an element of a nested compound data structure in the first compound data structure is assigned to an element of the second compound data structure that is not part of a nested compound data structure; or
the value of an element of the first compound data structure that is not part of a nested compound data structure is assigned to an element of a nested compound data structure in the second compound data structure.
