Progetti in formato testuale

Introduzione

Un progetto in formato testuale è un progetto in formato aperto, facilmente consultabile dagli utenti tramite editor di codice. Quando si crea un progetto in formato testuale, il modello informativo di progetto viene rappresentato in file di testo in formato YAML: in particolare, ogni nodo/modulo del progetto viene descritto in un file YAML dedicato. Il progetto può quindi essere consultato e modificato in modo granulare tramite i diversi file YAML.

Il formato testuale è utile quando si progetta in ambiente collaborativo con strumenti tipici dello sviluppo software (es. GitHub, SVN…). È inoltre utile per consultare e modificare il progetto al di fuori di Q Studio.

File e cartelle del progetto in formato testuale

Quando si crea un progetto in formato testuale, nella cartella di progetto viene creata la cartella Nodes, che contiene un file YAML di progetto che rappresenta il nodo di progetto (ProjectName.yaml), e una cartella per ogni nodo cartella del progetto (UI, Model, Converters, Alarms, eccetera). Ogni cartella contiene un file YAML che ne descrive il relativo nodo (UI.yaml, Model.yaml, Converters.yaml, Alarms.yaml, ecc.).

Durante la progettazione, tutte le modifiche apportate al progetto sono automaticamente scritte nei file YAML.
Quando in Q Studio si creano strutture di nodi annidati che corrispondono alle strutture standard degli oggetti nativi di UNIQO (ad esempio, quando si crea la struttura di un Driver di comunicazione con le relative Station di comunicazione, TagImporter, eccetera), nella cartella del nodo padre su file system Q Studio crea automaticamente altre sottocartelle e i relativi file YAML.

Anche i file di progetto .uniqo e .uniqo.design in un progetto testuale possono essere consultati tramite editor di testo. Essi contengono informazioni generali sul progetto e le sue dipendenze con i moduli Q Platform.

Esempio file YAML

Di seguito un esempio della rappresentazione del nodo UI in formato YAML.

Gli elementi descritti nel file YAML sono solo gli elementi valorizzati nel progetto. Se una proprietà di un oggetto non è valorizzata in Q Studio,essa non è descritta nel file YAML.

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