Custom Compound Data Types in Declarative Programs

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current workflow frameworks limit developers' ability to define custom data structures, such as recursive and polymorphic compound types, forcing them to implement recursion and polymorphism with increased complexity through explicit type coercion and control flow logic, which leads to verbosity in declarative language code.

Innovation Solution

A data container is provided that can be configured to represent any combination of primitive or compound data types, allowing developers to create and manipulate custom compound data types without requiring registration in the underlying framework, using a path-based syntax for accessing and manipulating elements within these types.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If developers use custom compound data types by manipulating the underlying type system via assemblies, then custom types can be accessed, but the types are not well-known to the workflow framework, are unverifiable, and cannot be adequately included in generic analysis

Engineering Contradiction:
Improveability to create custom compound data typesVSAvoidverifiability and framework awareness of custom types
Core Design Contradiction:
Adaptability or versatilityVSReliability

Solution Approach 1:

The patent introduces a data container as an intermediary mechanism between the developer's custom data type definitions and the workflow framework. This data container serves as a mediator that the framework recognizes and can verify, allowing custom types to be properly integrated without requiring direct manipulation of the underlying type system. The data container acts as a bridge that translates custom type definitions into a format the framework can understand and verify.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Adaptability or versatility

If developers implement recursion and polymorphism using explicit type coercion and control flow logic, then custom recursive and polymorphic compound data structures can be created, but the declarative language code becomes much more verbose and complex

Engineering Contradiction:
Improvesupport for recursive and polymorphic data structuresVSAvoidcomplexity of declarative language code
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The data container provides self-service functionality by automatically handling recursion and polymorphism internally. When developers define custom compound data types using the data container, the system automatically manages the complexity of recursive structures and polymorphic relationships without requiring explicit type coercion logic or complex control flow from the developer. The data container serves itself by providing the necessary infrastructure for these complex data structures to work transparently.

Inventive Principle:
Principle #25Self-service

Solution Approach 2:

The patent segments the complexity of recursion and polymorphism handling into separate, managed components within the data container. Rather than requiring developers to manually implement these complex features through verbose code, the data container encapsulates these functions as internal mechanisms. This segmentation allows the framework to manage recursive and polymorphic behavior as discrete, controlled functions rather than scattered throughout the developer's code.

Inventive Principle:
Principle #1Segmentation

3Adaptability or versatility

If developers write complex control flow logic to define the recursive nature of a data structure, then recursive data structures can be implemented, but the code becomes less intuitive and more difficult to maintain

Engineering Contradiction:
Improveability to define recursive data structuresVSAvoidintuitiveness and maintainability of code
Core Design Contradiction:
Adaptability or versatilityVSEase of operation

Solution Approach 1:

The data container performs preliminary action by pre-defining the structural framework for recursive and polymorphic data types before the developer needs to use them. When a developer creates a custom compound data type using the data container, the recursive and polymorphic capabilities are already in place as part of the container's infrastructure. This eliminates the need for developers to write complex control flow logic to establish these features, as they are already prepared and configured.

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS8949785B2Custom compound types in declarative programs
Publication Date: 2015.02.03 MICROSOFT TECHNOLOGY LICENSING LLC
  • US8949785B2 patent drawing
  • US8949785B2 patent drawing
  • US8949785B2 patent drawing

AI summary

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.