Aller directement à la fin des métadonnées
Aller au début des métadonnées

Vous consultez une ancienne version de ce contenu. Consultez la version actuelle.

afficher les différences Afficher l'historique des versions

Vous regardez la version actuelle de cette page. (v. 1) afficher la version suivante »

schema.json

  1. S’assurer de la cohérence de sw_sys_metacolumn.
    Voici une requête pour aider à la comparaison de la définition des colonnes par le Studio et la réalité.

    SET @tableName = 'customercontact';
    SET @realTableName = CONCAT('sw_data_', @tableName);
    
    SELECT
      meta.metacolumn_ID,
      meta.schemaColumn,
      isc.COLUMN_NAME,
      meta.`position`,
      isc.ORDINAL_POSITION,
      meta.schemaColumnType,
      meta.schemaColumnLength,
      isc.COLUMN_TYPE,
      meta.storageType,
      isc.IS_GENERATED
    FROM (
    	SELECT
    		mc.*,
    		mt.schemaTable
    	FROM sw_sys_metacolumn AS mc
    	INNER JOIN sw_sys_metatable AS mt ON mt.metatable_ID = mc.metatable_ID
    	WHERE mt.schemaTable = @realTableName
    ) AS meta
    LEFT JOIN INFORMATION_SCHEMA.COLUMNS AS isc ON isc.TABLE_SCHEMA = DATABASE() AND isc.TABLE_NAME = @realTableName AND isc.COLUMN_NAME = meta.schemaColumn
    
    UNION
    
    SELECT
      meta.metacolumn_ID,
      meta.schemaColumn,
      isc.COLUMN_NAME,
      meta.`position`,
      isc.ORDINAL_POSITION,
      meta.schemaColumnType,
      meta.schemaColumnLength,
      isc.COLUMN_TYPE,
      meta.storageType,
      isc.IS_GENERATED
    FROM INFORMATION_SCHEMA.COLUMNS AS isc
    LEFT JOIN (
    	SELECT
    		mc.*,
    		mt.schemaTable
    	FROM sw_sys_metacolumn AS mc
    	INNER JOIN sw_sys_metatable AS mt ON mt.metatable_ID = mc.metatable_ID
    	WHERE mt.schemaTable = @realTableName
    ) AS meta ON isc.COLUMN_NAME = meta.schemaColumn
    WHERE isc.TABLE_SCHEMA = DATABASE() AND isc.TABLE_NAME = @realTableName
    
    ORDER BY IFNULL(`position`, 0), ORDINAL_POSITION;
  2. Définir les colonnes

    1. Avoir toutes les colonnes réelles dans leur ordre de création

      SET @tableName = 'customercontact';
      SET @prefix = CONCAT('sw_data_', @tableName, '.');
      
      /*Field list (without custom field)*/
      SELECT SUBSTRING(mc.codeMetaColumn, LENGTH(@prefix)+1)
      FROM sw_sys_metacolumn AS mc
      WHERE mc.codeMetaColumn LIKE CONCAT(@prefix,'%') AND IFNULL(mc.storageType, 0) != 1
      ORDER BY mc.position;
    2. Rendre certaines colonnes inaccessibles

    3. Définir toutes les entités nécessaires pour les colonnes avec ForeignEntity

    4. Formatter

    5. Traduire

    6. Badge

  3. Définir l’identification

  4. Si c’est une sous-entité définir les propriétés nécessaires

  5. Définir l’export de la liste avec Exportable
    Note : si la variable de profile n’existe pas encore dans l’Excel, mettre “Exportable”: false
    Exemple : pour l’entité customercontact

    "Exportable": {
      "Variable": "profile.exportable.customercontact"
    }
  6. Définir la fiche d'édition avec EntityConfigName
    Notes :

    • le nom correspond au fichier sans l’extension .id.component.json

    • la propriété est soumise aux BusinessFeatureFlags

  7. Ajouter les actions

    "Actions": {
      "Standard": {
        "New": {
          "Link": {
            "Target": "customer/new",
            "Mode": "Redirect"
          }
        }
      },
      "Inline": {
        "Inline1": {
          "Label": "Inline1",
          "Link": {
            "Target": "customer",
            "Mode": "Popin"
          }
        },
        "Inline2": {
          "Label": "Inline2",
          "Link": {
            "Target": "customer",
            "Mode": "Popin"
          }
        },
        "Inline3": {
          "Label": "Inline3",
          "Icon": "lightbulb",
          "Link": {
            "Target": "customer",
            "Mode": "Popin"
          }
        }
      },
      "Menu": {
        "Menu1": {
          "Label": "Menu1",
          "Link": {
            "Target": "customer",
            "Mode": "Popin"
          }
        },
        "Menu2": {
          "Label": "Menu2",
          "Link": {
            "Target": "customer",
            "Mode": "Popin"
          }
        },
        "Menu3": {
          "Label": "Menu3",
          "Icon": "lightbulb",
          "Link": {
            "Target": "customer",
            "Mode": "Popin"
          }
        }
      }
    }
  8. Définir la vue par défaut “Tous”

    "ViewsDefaultSettings": {
      "Listing": {
        "Columns": [
          "colonne1",
          "colonne2",
          "colonne3"
        ]
      }
    }

    Notes :

    • Le système met toujours la colonne primaire (TitleField) en première position, même si on ne l’a pas mis dans la liste des colonnes de la vue

    • Lorsqu’il n’y a pas une colonne en plus de la colonne primaire, il y a une erreur système

entity.json

  1. Reprendre les conditions d’accès à la page

  2. S’il n’est pas nécessaire de définir une vue, rester sur la config la plus minimaliste possible.

  3. S’il est nécessaire de définir des vues d’intégration, voici un exemple

    "Children": {
      "myEntityViews": {
        "Type": "entityviews",
        "views": {
          "view1": {
            "Label": "View1",
            "Settings": {
              "Listing": {
                "Columns": [
                  ...
                ]
              }
            }
          },
          "view2": {
            "Label": "View2",
            "Settings": {
              "Listing": {
                "Columns": [
                  ...
                ]
              }
            }
          },
          "view3": {
            "Label": "View3",
            "Settings": {
              "Listing": {
                "Columns": [
                  ...
                ]
              }
            }
          }
        }
      }
    }

Gérer le droit d’accès aux données

  • Aucune étiquette