Flying Logic Document Format

Flying Logic documents are XML-formatted files. The schema for release 3 documents can be downloaded here. Following are some supporting tables explaining more about the schema.

Reference Tables

The table below gives information about each XML element that can be found in a Flying Logic document. The elements are listed in the order they generally appear in a document. The attributes and attribute elements are common children of many elements, so those elements and their children are documented at the end of this table. Because the words “attributes” and “attribute” are used as element names in a Flying Logic document, those words will be shown in a fixed-width font when referring to the element names and not as an XML attribute value.

Element

Description

flyingLogic

The root element. Attributes are majorversion (required, “3” for Flying Logic 2.X), minorversion and uuid. Can contain domains, symbols, displaySettings, canvasSettings, inspectorSettings, printSettings, documentInfo and decisionGraph elements. During XSLT export will also contain an exportDocumentInfo element.

domains

The custom domains defined in the document. Can contain domain and alteredBuiltinDomain elements.

domain

A custom domain. Contains entityclass and attributes elements.

entityclass

Either a custom entity class in a domain or a reference to an entity class as an entity attribute. For a custom entity class, contain an attributes element. For a reference, has required XML attributes name and uuid.

alteredBulltinDomain

Appears when a built-in domain is hidden. Required attributes are domainName and entityClass (the guid of one entity class in the domain). Contains an attributes element.

symbols

The custom symbols defined in this document. Can contain symbol elements.

symbol

Either a custom symbol or a reference to a symbol as an entity or group attribute. Required attributes are generator and idCode. A custom symbol definition will contain either additional elements or text depending on the format of the custom symbol, and can have a clip element. Bitmap image symbols contain a base-64 encoded dump of a PNG file as text.

clip

A clip rectangle for a symbol. If missing, the default is the whole “image.” Required attributes are x, y, width and height.

data

Appears in an SVG symbol. Contains a CDATA with the XML text from an SVG file.

displaySettings

The visual elements and layout of the graph. All the attributes are optional: addEntityAsSuccessor, annotationToBrowse, bias, confidenceVisible, edgeNotesVisible, edgeWeightsVisible, entityIdVisible, noteNumbersVisible, orientation, and projectManagementVisible.

canvasSettings

The scroll position and zoom level of the graph. Optional attributes are horizScroll, vertScroll and zoom.

chartSettings

The column visibility and with settings for chart view. All the attributes are optional: classVisible, classWidth, completionVisible, effortVisible, finishDateVisible, resourceVisible, resourceWidth, startDateVisible, and titleWidth.

inspectorSettings

This element has the state of the sidebar (inspector panel) and contains inspector elements. The attributes are visibility and width.

inspector

State information about an inspector. The title attribute matches the internal name of one inspector. The optional attributes are visibility and height. Only the Domain, Text and User-Defined Attributes inspectors have a height.

printSettings

Saved printing settings for the document. Optional attributes are footerLeft, footerMiddle, footerRight, headerLeft, headerMiddle, headerRight, paperMargins, paperName, paperOrientation, paperSize, saveInk and showselhalo. (Yes, showselhalo is all lowercase.)

documentInfo

Has attributes for some of the values settable the Document inspector: author, comments, keywords and title.

decisionGraph

The actual graph. Contains entityOperator, defaultJunctorOperator and logicGraph elements.

entityOperator

The current entity operator for the graph. The class attribute is the name of a vertex operator. See notes about vertex operators at after this table.

defaultJunctorOperator

The current default junctor operator for newly created junctors. The class attribute is the name of a vertex operator. See notes about vertex operators at after this table.

calendars

The calendars defined in the document. Can be missing if project management has never been enabled for the document. Contains one or more indexed element elements that themselves contain a workdays element. See com.flyinglogic.app.project.Workweek in table below for details.

resources

The resources defined in the document. Can be missing if no resources are defined. Contains one or more indexed element elements that themselves contain a resource element. See com.flyinglogic.app.project.Resource in table below for details.

logicGraph

The organization of the graph. Contains a operatorFamily and graph element.

operatorFamily

The key-value family of the graph. Has one required attribute class with a required value of com.flyinglogic.decisiongraph. DecisionGraphOperatorFamily.

graph

The elements of the graph. Contains attributes, vertices and edges elements.

vertices

Contains vertex elements representing entities, junctors and groups.

vertex

An entity, junctor or group. Has a required attribute of eid, an unique integer assigned to each graph element. Entities and junctors have optional attributes of inEdgeOrder and outEdgeOrder, which are space-delimited list of eid values for edges connected to the element. Groups have a grouped attribute, a space-delimited list of eid values for child vertices, and an optional collapsed attribute which has a value of true is the group is collapsed. Contains an attributes element. During XSLT export can also contain an exportAttributes element.

edges

Contains edge elements.

edge

An edge. Has three required attributes: eid, an unique integer assigned to each graph element; and source and target, the eid of the connected vertices. During XSLT export can also contain an exportAttributes element.

attributes

Contains attribute elements.

attribute

An attribute is a key-value pair with an associated data type for the value. There are two required attributes, key and class. Each known class has its own format for its contents. See the table of recognized classes below.

extendedDocumentInfo

This element only appears during XSLT export. Has attributes title (the document file name as a title), screenWidth and screenHeight (visible dimensions of graph) and hoistKey (eid of hoisted group if graph hoisted).

exportAttributes

This element only appears during XSLT export if the flags XSLT_INCLUDE_FRAMES or XSLT_INCLUDE_EDGE_SPLINES are set in the exportDocument call. Contains exportAttribute elements.

exportAttribute

A key-value pair with a key attribute and value of either text content or child elements. If XSLT_INCLUDE_FRAMES flag is set and a graph element is visible. it will have exportAttribute elements with values for x, y, width and height. If XSLT_INCLUDE_EDGE_SPLINES is set, a visible edge will have an exportAttribute with a key of path and contains a bezierList element.

bezierList

Has attributes of head and tail that indicate what the edge is connected to: source, target, annotation, weight, entityhoistcap or junctorhoistcap. Contains one or more bezier elements.

bezier

Has attributes giving the control points x1, y1, x2, y2, x3, y3, x4 and y4.

The contents of an attribute element varies by the value of the class attribute. The first table below lists all the know keys, the class for that key and the allowed parent element of the attributes element it appears within. The second table describes the contents for each recognized class. Operators have more details after these two tables.

Value of key

Value of class

Parent elements (notes)

user.identifier

java.lang.String java.lang.Integer java.lang.Double java.lang.Boolean

graph vertex edge (user defined attribute where identifier is the string appearing in the UI or key to use with the user array in scripts)

title

java.lang.String

vertex (entity and group only)

confidence

com.arciem.FuzzyBoolean

edge vertex (entity only)

type

java.lang.String

vertex (either “entity” or “junctor”)

typeid

java.lang.Integer

vertex (entity only)

completion

java.lang.Double

vertex (entity only)

effortTime

com.flyinglogic.app.project.FLTimeInterval

vertex (entity only)

effort

java.lang.Double

entityClass vertex (entity only) (1.0 equals one day) Deprecated. Do not use in 3.0 or later documents.

startDate

com.flyinglogic.app.project.FLDate

vertex (entity only)

endDate

com.flyinglogic.app.project.FLDate

vertex (entity only)

projectStartDate

com.flyinglogic.app.project.FLDate

graph (calculated with finish-to-start scheduling)

projectEndDate

com.flyinglogic.app.project.FLDate

graph (calculated with start-to-finish scheduling)

resAssignment

java.lang.String

vertex (entity only)

startTime

com.flyinglogic.app.project.FLTimeInterval

vertex (entity only, always calculated for now)

endTime

com.flyinglogic.app.project.FLTimeInterval

vertex (entity only, always calculated for now)

utilization

java.lang.Double

vertex (entity only, informational only)

noteHTML

com.arciem.CDATAElement

edge vertex (styled annotation as XHTML text)

note

java.lang.String

edge vertex (unformatted version of noteHTML)

noteNumber

java.lang.Integer

edge vertex

entityClass

com.flyinglogic.logicgraph.entityclass.EntityClass

vertex (entity only)

symbol

com.arciem.symbol.Symbol

entityClass vertex (entity and group only)

weight

java.lang.Double

edge

backEdge

java.lang.Boolean

edge

forwardOperator

operator (for edge always com.flyinglogic.logicgraph.operator.MultiplyEdgeOperator)

edge vertex (entity and junctor only)

color

com.arciem.graphics.ColorRGB

entityClass vertex (group only)

name

java.lang.String

domain entityClass

uuid

java.util.UUID

entityClass

builtin

java.lang.Boolean

domain entityClass

hidden

java.lang.Boolean

domain entityClass

edgeWeight

java.lang.Double

entityClass

showname

java.lang.Boolean

entityClass

Value of class

Description of attribute contents

java.lang.String

Text is a string.

java.lang.Integer

Text is an integer.

java.lang.Double

Text is a real.

java.lang.Boolean

Text is either true or false.

java.util.UUID

Text is a text-encoded globally unique identifier (GUID);

com.arciem.CDATAElement

A CDATA node containing XML or XHTML.

com.arciem.FuzzyBoolean

A fuzzyBoolean element with a required attribute of true with a real value normally between 0.0 and 1.0.

com.flyinglogic.app.project.FLDate

A date element with a required attribute value of a ISO-8601 date and time in UTC. The time should always be 00:00:00 in this version of Flying Logic.

com.arciem.symbol.Symbol

A symbol element (see above). Can have just an idCode of “none”, indicating the default symbol for an entity class is being hidden.

com.flyinglogic.logicgraph.entityclass.EntityClass

An entityClass element (see above).

com.arciem.graphics.ColorRGB

A colorRGB element with three attributes red, green and blue as real values between 0.0 and 1.0.

com.flyinglogic.app.project.Workweek

A workdays element. Has three required attributes of rid (resource ID), days (a comma-delimited days of the week as lower-case three-letter abbreviations) and hours (must be 1.0 to 23.0). Can contain event elements that act as exceptions to the work schedule.

com.flyinglogic.app.project.Resource

a resource element. Has three required attributes: rid (resource ID), name, and cid (calendar ID). Can contain abbr (abbreviation, can be empty) and utilization (value between 0.0 and 1.0, but not 0.0) attributes.

com.flyinglogic.app.project.FLTimeInterval

an interval element. Contains an ISO-8601 time value; e.g., PT8H0M0S represents a time interval of 8 hours

Each kind of vertex and edge operator has a unique contained element that has no attributes or contents. The table below lists the single element contained in each operator by class.

Operator class

Contained element

com.flyinglogic.logicgraph.operator.FuzzyOrVertexOperator

fuzzyOr

com.flyinglogic.logicgraph.operator.FuzzyAndOperator

fuzzyAnd

com.flyinglogic.logicgraph.operator.FuzzyXorVertexOperator

fuzzyXor

com.flyinglogic.logicgraph.operator.AverageVertexOperator

average

com.flyinglogic.logicgraph.operator.ComplementVertexOperator

comp

com.flyinglogic.logicgraph.operator.DistributorVertexOperator

dist

com.flyinglogic.logicgraph.operator.MaxVertexOperator

max

com.flyinglogic.logicgraph.operator.MinVertexOperator

min

com.flyinglogic.logicgraph.operator.MultiplyVertexOperator

multiply

com.flyinglogic.logicgraph.operator.NegateVertexOperator

neg

com.flyinglogic.logicgraph.operator.ProductVertexOperator

product

com.flyinglogic.logicgraph.operator.ProportionVertexOperator

proportion

com.flyinglogic.logicgraph.operator.ReciprocalVertexOperator

reciprocal

com.flyinglogic.logicgraph.operator.SumVertexOperator

sum

com.flyinglogic.logicgraph.operator.SumProbabilitiesVertexOperator

sump

com.flyinglogic.logicgraph.operator.MultiplyEdgeOperator

multiply

Last updated