Skip to content

Modelagem de CI com YAML no Sistema de Tickets OTOBO

Este capítulo demonstra como definir e estender seus Itens de Configuração (CIs) no sistema de tickets OTOBO via YAML – desde a estrutura de páginas e layout até campos dinâmicos e tipos de campo.


1. Estrutura de Definições de CI

Cada definição de CI no OTOBO consiste em vários componentes principais:

yaml
- Class:
    Name: <CI-Classe>
    Categories:
      - All
      - <Outras Categorias>
    NumberModule: AutoIncrement
    PermissionGroup: itsm-configitem
    VersionStringModule: Incremental
  Definition: |
    Pages:
      - Name: Summary
        Layout:
          Columns: 3
          ColumnWidth: 1fr 1fr 1fr
        Interfaces:
          - Agent
          - Customer
        Content:
          - Section: General Fields::General Information
            RowStart: 1
            ColumnStart: 1
          - Section: ITSM Model::Model
            RowStart: 1
            ColumnStart: 2
          - Section: CMDB Description::Description
            RowStart: 2
            ColumnStart: 1
            ColumnSpan: 2
  DynamicFields: {  }

1.1 Páginas

  • Name: Nome da aba na visualização do Agente.
  • Interfaces: Controle de quem vê a aba (Agente, Cliente, …).
  • Content: Lista de seções, com posição (RowStart, ColumnStart, opcionalmente Span).

1.2 Layout

  • Columns: Número de colunas na aba.
  • ColumnWidth: Especificações de largura proporcionais (por exemplo, 1fr 2fr 1fr).

1.3 Funções (Roles)

As funções definem seções e listas de campos reutilizáveis:

yaml
- Definition: |
    Sections:
      General Information:
        Content:
          - Header: Informações Gerais
          - DF: System-Name
          - DF: System-Version
      Relations:
        Type: ConfigItemLinks
        Header: Relações
  RoleName: CMDB General Fields
  • RoleName: Nome único da função.
  • Sections: Contém uma ou mais seções com referências de campo (DF:).

2. Campos Dinâmicos (DynamicFields) e Tipos de Campo

Com DynamicFields, você estende suas classes de CI com atributos individuais. Cada campo recebe um nome, tipo e configuração:

yaml
DynamicFields:
  DynamicFieldName:
    FieldType: Text
    Label: Meu Rótulo
    Name: System-Name
    ObjectType: ITSMConfigItem
    Config:
      DefaultValue: 'demo'
      MultiValue: '0'
      PossibleNone: '1'
      Tooltip: ''
  
  System-LifecycleStatus:
    FieldType: Dropdown
    Label: Lifecycle status of system
    Name: System-LifecycleStatus
    ObjectType: ITSMConfigItem
    Config:
      DefaultValue: ''
      MultiValue: '0'
      PossibleNone: '1'
      PossibleValues:
        demo: demo
        productive: productive
      Tooltip: ''

2.1 Tipos de Campo Importantes

FieldTypeDescrição
TextCampo simples de uma linha
TextAreaCampo de texto livre de várias linhas
DateCampo de data (com restrições via YearsInPast/...)
DropdownCampo de seleção (Single/Multi via MultiValue)
AgentPesquisa de Usuário/Agente LDAP
ConfigItemVinculação a outro CI (tipo de relação definível)
ScriptTemplateToolkitCampo calculado via Template (por exemplo, somas)

2.2 Opções de Configuração

  • DefaultValue: Valor padrão ao criar um novo item.
  • MultiValue: '0' (seleção única) ou '1' (múltiplas seleções).
  • PossibleNone: '1', para permitir seleção vazia.
  • PossibleValues: Pares Chave-Valor para campos de dropdown.
  • EditFieldMode: por exemplo, Dropdown, AutoComplete.
  • ReferenceFilterList, ReferencedObjectType: Para campos de pesquisa.

3. Exemplo

yaml
- Class:
    Name: CIName
    Categories:
      - All
      - IT
    NumberModule: AutoIncrement
    PermissionGroup: itsm-configitem
    VersionStringModule: Incremental
  Definition: |
    Pages:
      - Name: Intro
        Layout:
          Columns: 2
          ColumnWidth: 1fr 1fr
        Interfaces:
          - Agent
        Content:
          - Section: CMDB General Fields::Information
            RowStart: 1
            ColumnStart: 1
          - Section: CMDB General Fields::Risks
            RowStart: 2
            ColumnStart: 1
      - Name: Details
        Layout:
          Columns: 1
          ColumnWidth: 1fr
        Interfaces:
          - Agent
        Content:
          - Section: CMDB General Fields::Software
            RowStart: 1
            ColumnStart: 1
  DynamicFields:
    System-Name: {  }
    System-Version: {  }
    System-LifecycleStatus: {  }

4. Dicas e Melhores Práticas

  • Modularidade: Use funções para seções recorrentes.
  • Clareza: Agrupe campos relacionados em páginas próprias.
  • Documentação: Comente seus arquivos YAML e mantenha gatilhos de versão.
  • Testes: Valide novos campos primeiro em uma instância de teste.

Com esta estrutura, você pode adaptar o CMDB do OTOBO de forma flexível aos requisitos da sua organização e mantê-lo sempre transparente.