Project source format
FactoryTalk Optix Studio
projects are based on text files. You can develop FactoryTalk Optix Studio
projects in a collaborative environment with version control inside or outside FactoryTalk Optix Studio
.
TIP:
You can use standard software development and versioning tools when you edit projects outside
FactoryTalk Optix Studio
.Project structure
Each
FactoryTalk Optix Studio
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.designFTOptixmodules 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
FactoryTalk Optix Studio
projects. 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,
FactoryTalk Optix Studio
propagates changes made to the project 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 Studio
, 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