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:
  • 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.
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
Have questions or feedback about this documentation? Please submit your feedback here.