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
.
TIP:
You can use standard software development and versioning tools when you edit projects outside of
FactoryTalk Optix
.Project structure
Each
FactoryTalk Optix
project contains these source files and folders:
- Afile. Contains general information about the project and references to theProjectName.optixFTOptixmodules that the project uses.
- Afile. Contains general information about the project and references toProjectName.optix.designFactoryTalk Optixmodules required by elements at design time.
- ANodes/folder. Contains these folders and files:
- Afile. Describes the root node of the project, which contains the related properties and references to the project main nodes.ProjectName.yaml
- Folders for each main project node (UI,Model, and so on). Each folder contains a.yamlfile 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.Example of YAML representation of the
UI
main project node.
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
Provide Feedback