Project source format
FactoryTalk Optix projects are based on text files. You can develop FactoryTalk Optix projects in a collaborative environment with version control inside or outside FactoryTalk Optix.
Project structure
-
A ProjectName.optix file. Contains general information about the project and references to the FTOptix modules that the project uses.
-
A ProjectName.optix.design file. Contains general information about the project and references to FactoryTalk Optix modules required by elements at design time.
-
A Nodes/ folder. Contains these folders and files:
-
A ProjectName.yaml file. Describes the root node of the project, which contains the related properties and references to the project main nodes.
-
Folders for each main project node (UI, Model, and so on). Each folder contains a .yaml file that describes its related information model (UI.yaml, Model.yaml, and so on).
-
-
ProjectFiles/ folder. Contains files used in the project (for example, images, fonts, or documents) and these subfolders:
-
NetSolution/. Contains all custom C# NetLogic files.
-
PKI/. Contains private, public, and refused certificates for OPC UA authentication.
-
Project information model
YAML files represent the information model of a project. Separate YAML files describe each project node and module, enabling application developers to change projects in a granular way by editing maintainable YAML files.
At design time, changes made to projects propagate to the YAML files. The elements described in YAML files are only the elements with a value assigned. If a property of an object is not assigned a value in FactoryTalk Optix, it is not described in the corresponding YAML file.
Name: UI
Type: FolderType
Children:
- Name: NativePresentationEngine
Type: NativePresentationEngine
ReferenceType: HasOrderedComponent
Children:
- Name: StartWindow
Type: NodePointer
DataType: NodeId
Value: {"IdType":2,"Id":"c5b6a0a2e7242da2ad471b89a993b1b9","Namespace":7}
Children:
- Name: Kind
Type: PropertyType
DataType: NodeId
Value: {"Id":12,"Namespace":4}
- Name: StyleSheet
Type: NodePointer
DataType: NodeId
Value: {"IdType":2,"Id":"87ddf487197f945cf28bbdd169681bc9","Namespace":7}
Children:
- Name: Kind
Type: PropertyType
DataType: NodeId
Value: {"Id":447,"Namespace":4}
- Name: EnableVirtualKeyboard
Type: BaseDataVariableType
DataType: Boolean
Value: false
- Name: StartingUser
Type: NodePointer
DataType: NodeId
Value: {"IdType":2,"Id":"bcd4b69a3d76a1ec8313316b2bbcbba2","Namespace":7}
Children:
- Name: Kind
Type: PropertyType
DataType: NodeId
Value: {"Id":14,"Namespace":1}
- Name: Sessions
Type: BaseObjectType
- Name: MainWindow
Id: g=c5b6a0a2e7242da2ad471b89a993b1b9
Supertype: Window
Children:
- Name: Width
Type: BaseDataVariableType
DataType: Size
ModellingRule: Optional
Value: 400.0
- Name: Height
Type: BaseDataVariableType
DataType: Size
ModellingRule: Optional
Value: 400.0
- Name: Panel1
Type: Panel
Children:
- Name: Width
Type: BaseVariableType
DataType: Size
ModellingRule: Optional
Value: 300.0
- Name: Height
Type: BaseVariableType
DataType: Size
ModellingRule: Optional
Value: 300.0
- Name: Label1
Children:
- Name: Text
Type: BaseDataVariableType
DataType: LocalizedText
ModellingRule: Optional
Value: {"LocaleId":"it-IT","Text":"Label1"}
- Name: NetLogicDiRuntime1
Type: NetLogic