Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Flying Logic Document Format

Flying Logic documents are XML-formatted files. The schema for release 4 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.

ElementDescription
flyingLogicThe root element. Attributes are majorversion (required, “5” for Flying Logic 4.X), minorversion, uuid, and instance. Can contain domains, symbols, displaySettings, canvasSettings, inspectorSettings, printSettings, documentInfo and decisionGraph elements. During XSLT export will also contain an exportDocumentInfo element.
domainsThe custom domains defined in the document. Can contain domain and alteredBuiltinDomain elements.
domainA custom domain. Contains entityclass and attributes elements.
entityclassEither 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.
alteredBulltinDomainAppears 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.
symbolsThe custom symbols defined in this document. Can contain symbol elements.
symbolEither 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.
clipA clip rectangle for a symbol. If missing, the default is the whole “image.” Required attributes are x, y, width and height.
dataAppears in an SVG symbol. Contains a CDATA with the XML text from an SVG file.
displaySettingsThe visual elements and layout of the graph. All the attributes are optional: addEntityAsSuccessor, annotationToBrowse, bias, confidenceVisible, edgeNotesVisible, edgeWeightsVisible, entityIdVisible, noteNumbersVisible, orientation, and projectManagementVisible.
canvasSettingsThe scroll position and zoom level of the graph. Optional attributes are horizScroll, vertScroll and zoom.
chartSettingsThe column visibility and with settings for chart view. All the attributes are optional: classVisible, classWidth, completionVisible, effortVisible, finishDateVisible, resourceVisible, resourceWidth, startDateVisible, and titleWidth.
inspectorSettingsThis element has the state of the sidebar (inspector panel) and contains inspector elements. The attributes are visibility and width.
inspectorState 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.
printSettingsSaved 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.)
documentInfoHas attributes for some of the values settable the Document inspector: author, comments, keywords and title.
decisionGraphThe actual graph. Contains entityOperator, defaultJunctorOperator and logicGraph elements.
entityOperatorThe 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.
defaultJunctorOperatorThe 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.
calendarsThe 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.
resourcesThe 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.
logicGraphThe organization of the graph. Contains a operatorFamily and graph element.
operatorFamilyThe key-value family of the graph. Has one required attribute class with a required value of com.flyinglogic.decisiongraph. DecisionGraphOperatorFamily.
graphThe elements of the graph. Contains attributes, vertices and edges elements.
verticesContains vertex elements representing entities, junctors and groups.
vertexAn 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.
edgesContains edge elements.
edgeAn 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.
attributesContains attribute elements.
attributeAn 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.
extendedDocumentInfoThis 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).
exportAttributesThis 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.
exportAttributeA 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.
bezierListHas 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.
bezierHas 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 keyValue of classParent elements (notes)
user.identifierjava.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)
titlejava.lang.Stringvertex (entity and group only)
confidencecom.arciem.FuzzyBooleanedge
vertex (entity only)
typejava.lang.Stringvertex (either “entity” or “junctor”)
typeidjava.lang.Integervertex (entity only)
completionjava.lang.Doublevertex (entity only)
efforttimecom.flyinglogic.app
.project.FLTimeInterval
vertex (entity only)
effortjava.lang.DoubleentityClass
vertex (entity only) (1.0 equals one day) Deprecated. Do not use in 3.0 or later documents.
startdatecom.flyinglogic.app
.project.FLDate
vertex (entity only)
enddatecom.flyinglogic.app
.project.FLDate
vertex (entity only)
projectstartdatecom.flyinglogic.app
.project.FLDate
graph (calculated with finish-to-start scheduling)
projectenddatecom.flyinglogic.app
.project.FLDate
graph (calculated with start-to-finish scheduling)
schedulebasisjava.lang.Stringgraph
assignmentjava.lang.Stringvertex (entity only)
starttimecom.flyinglogic.app
.project.FLTimeInterval
vertex (entity only, always calculated for now)
endtimecom.flyinglogic.app
.project.FLTimeInterval
vertex (entity only, always calculated for now)
utilizationjava.lang.Doublevertex (entity only, informational only)
noteHTMLcom.arciem.CDATAElementedge
vertex
(styled annotation as XHTML text)
notejava.lang.Stringedge
vertex
(unformatted version of noteHTML)
noteNumberjava.lang.Integeredge
vertex
entityClasscom.flyinglogic
.logicgraph.entityclass.EntityClass
vertex (entity only)
symbolcom.arciem.symbol.SymbolentityClass
vertex (entity and group only)
weightjava.lang.Doubleedge
backEdgejava.lang.Booleanedge
forwardOperatoroperator
(for edge always
com.flyinglogic.logicgraph
.operator.MultiplyEdgeOperator)
edge
vertex (entity and junctor only)
colorcom.arciem.graphics.ColorRGBentityClass
vertex (group only)
namejava.lang.Stringdomain
entityClass
uuidjava.util.UUIDentityClass
builtinjava.lang.Booleandomain
entityClass
hiddenjava.lang.Booleandomain
entityClass
edgeWeightjava.lang.DoubleentityClass
shownamejava.lang.BooleanentityClass

Value of classDescription of attribute contents
java.lang.StringText is a string.
java.lang.IntegerText is an integer.
java.lang.DoubleText is a real.
java.lang.BooleanText is either true or false.
java.util.UUIDText is a text-encoded globally unique identifier (GUID);
com.arciem.CDATAElementA CDATA node containing XML or XHTML.
com.arciem.FuzzyBooleanA 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.SymbolA 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.ColorRGBA 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 classContained 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