Core Architecture: Model: DescribeIt - UA-ScriptEase/scriptease GitHub Wiki

DescribeIts are a GUI construct for allowing the user to select between similar KnowIt bindings. This is a result of Neesha Desai's research thesis Using Describers to Simplify ScriptEase. The idea here is to present the user with a customizable description of what they want to store in a KnowIt. They are presented with a DAG that flows left-to-right that contains either text segments or nodes for filling in KnowIt bindings.

DescribeIts have a start node, which is a DescribeItNode, and a mapping of DescribeItNodes to ScriptIts that form paths. DescribeItNodes may have either a name or a knowit, which is only used to display them graphically; the actual KnowIt or text will come from the binding.

When the user selects a path and closes the graph, a KnowItBindingFunction with the appropriate ScriptIt is bound to the KnowIt. Right now it is up to the developer to make sure DescribeItNodes match the ScriptIt. In the future, it would be nice if we could just add a bunch of ScriptIts to a KnowIt and automatically parse similar text to create a graph.

#DescribeItManager The DescribeItManager maintains a map of DescribeIts attached to KnowIts. You could think of DescribeIts as a rulebook for certain KnowIts to follow. It would not make sense for a KnowIt to have its own DescribeIt, so we cross-reference them in the DescribeItManager to find out which KnowIts have attached DescribeIts.