Ajouter un état au modèle d’état

  • Rversion finale: Zurich
  • Mis à jour 31 juil. 2025
  • 5 minutes de lecture
  • Vous pouvez ajouter un nouvel état au modèle d’état existant pour différents types de changement en fonction des exigences de votre organisation.

    Avant de commencer

    Rôle requis : script_include_admin, ui_policy_admin, ui_action_admin ou admin

    Pourquoi et quand exécuter cette tâche

    Le module d’extension State Model est activé par défaut. Pour plus d’informations sur les états du système de base pour les demandes de changement, consultez Modèle et transitions d’état.

    Procédure

    1. Accédez à la Tous > Changement > Créer et procédez comme suit pour ajouter un choix à la liste de choix.
      1. Cliquez avec le bouton droit sur le champ État, puis cliquez sur Configurer le dictionnaire.
      2. Dans la liste connexe Choix, exécutez un filtre pour [Table] [is] [change_request].
      3. Cliquez sur Nouveau et ajoutez le nouvel état avec les informations suivantes.
        • Table : Demande de changement [change_request]
        • Étiquette : nom de votre nouvel état
        • Valeur : valeur numérique non encore affectée à un choix d’état existant
        • Séquence : numéro correspondant à l’emplacement d’affichage dans la liste des états. Si vous lui affectez le même numéro de séquence qu’un autre choix, il s’affichera en dessous de celui-ci.
      4. Cliquez sur Envoyer.
    2. Accédez à la Définition du système > Includes de script.
      Les enregistrements d'include de script dont le nom contient SNC sont en lecture seule. Lorsque vous effectuez les étapes suivantes, assurez-vous de sélectionner l'include de script correct à modifier. Par exemple, modifiez ChangeRequestStateHandler, non ChangeRequestStateHandlerSNC.
      Remarque :
      les includes de script étendus (sans SNC) incluent toutes les fonctionnalités de leurs équivalents SNC. Si vous modifiez un l'include de script de base (ajouté avec SNC), il n’est plus mis à jour lors des mises à niveau du système.
    3. Ouvrez le script ChangeRequestStateHandler pour apporter les modifications suivantes.
      • Mettez à jour la section statehandler constants (constantes du gestionnaire d’état) au début de cet include de script pour inclure des valeurs pour l’état que vous venez d’ajouter. Par exemple :
        ChangeRequestStateHandler.MY_NEW_STATE = "mynewstate";
      • Mettez à jour la carte STATE_NAMES à la fin de la fonction d’initialisation pour inclure la valeur numérique de l’état que vous venez d’ajouter. Par exemple :
        this.STATE_NAMES["-6"] = ChangeRequestStateHandler.MY_NEW_STATE;
        Remarque :
        la carte STATE_NAMES fournit un mappage entre les valeurs numériques stockées dans le champ État d’une demande de changement sous un nom mémorisable. Ce mappage permet d’utiliser le nom mémorisable dans les includes de script du modèle d’état.
    4. Modifiez l'include de script approprié pour intégrer au modèle les nouveaux états destinés aux types de demande de changement pertinents.
      Chaque type de demande de changement dispose d’un include de script correspondant nommé ChangeRequestStateModel_<type><type> est la valeur du type de demande de changement. Par exemple, ChangeRequestStateModel_normal définit le modèle d’état des demandes de changement de type Normal.
      Chaque include de script de modèle d’état inclut des objets qui spécifient les informations suivantes :
      • Les états disponibles.
      • Le ou les états suivants pour chaque état disponible.
      • Les fonctions de chaque transition d’état pour déterminer si cette transition est disponible (canMove) avec une fonction à exécuter dans le cadre du passage vers cet état (moving).

      L’exemple suivant est issu de l'include de script ChangeRequestStateModel_normal.

      Modification du script d'état pour les demandes de changement
    5. Créez une action d’interface utilisateur pour afficher un bouton permettant de faire progresser la demande de changement vers le nouvel état.
      1. Utilisez Insérer et rester pour créer une copie de l’une des actions d'interface utilisateur par défaut, par exemple Implémenter.
      2. Mettez à jour les champs suivants sur le formulaire.
        Nom de champ Mettre à jour
        Nom Mettez à jour le nom pour correspondre à celui du nouvel état.
        Nom de l’action Remplacez l’état à la fin du nom par le nouvel état.
        Conseil Mettez à jour le texte pour référencer le nouvel état.
        Onclick Renommez la fonction pour correspondre au nouvel état.
        Condition Mettez à jour l’appel de la fonction isNext avec le nouvel état.
        Script
        • Mettez à jour le nom de la fonction pour correspondre à celle spécifiée dans le champ Onclick.
        • Mettez à jour la ligne commençant par ga.addParam(“sysparm_state_name”,... pour entrer le nom du nouvel état comme deuxième paramètre de la fonction addParam.
        • Mettez à jour la ligne commençant par gsftSubmit et modifiez le troisième paramètre de cet appel de fonction pour correspondre à la valeur saisie dans le champ Nom de l’action.

        L’exemple suivant utilise l’action d’interface utilisateur Implémenter pour afficher les valeurs à mettre à jour.

        Action d'interface utilisateur modifiée
        L'include de script ChangeRequestStateHandler contient deux fonctions utilisées pour déterminer si une action d’interface utilisateur est affichée en fonction de l’état actuel de la demande de changement.
        • isNext(StateName) : cette fonction vérifie uniquement si le stateName transmis en tant que paramètre est disponible en tant qu’état suivant de l’état actuel de la demande de changement.
        • canMoveTo(StateName) : cette fonction effectue la même vérification que la fonction isNext. Toutefois, elle vérifie également le résultat de l’appel de la fonction appropriée canMoveTo pour la transition de l’état actuel vers l’état stateName transmis en tant que paramètre. Cette fonction est utilisée si des vérifications supplémentaires dans les fonctions canMove (par ex. un champ devant contenir une valeur particulière) doivent être effectuées.
    6. Pour mettre à jour la configuration du flux de processus en vue d’incorporer le nouvel état de changement, procédez comme suit.
      Le flux de processus est affiché en haut du formulaire Demande de changement et est configuré dans différents enregistrements de flux de processus.
      Un nouvel état apparaît dans le flux de processus
      1. Accédez à la Interface utilisateur du système > Flux de processus et le filtre pour [Table] [is] [change_request].
      2. Ouvrez un enregistrement et utilisez Insérer et rester pour créer une copie.
      3. Mettez à jour les champs suivants sur le formulaire.
        Nom de champ Mettre à jour
        Nom Mettez à jour le nom pour correspondre à celui du nouvel état.
        Étiquette Mettez à jour le nom pour correspondre à celui du nouvel état. Cette valeur est incluse dans le flux de processus affiché dans la partie supérieure du formulaire Demande de changement.
        Ordre Mettez à jour ce numéro de manière à ce que le nouvel état figure dans la séquence correcte avec les enregistrements de flux de processus existants pour d’autres états.
        Condition Mettez à jour le filtre pour correspondre au nouvel état.
      4. Cliquez sur Mettre à jour.

    Que faire ensuite

    Pour vous assurer que le nouvel état fonctionne comme prévu, examinez les workflows par défaut. Ajoutez le nouvel état au workflow pertinent.

    Examiner les workflows par défaut

    Toute modification apportée au modèle d’état peut avoir un impact sur les workflows par défaut des demandes de changement.

    Avant de commencer

    Rôle requis : admin

    Pourquoi et quand exécuter cette tâche

    Chaque type de changement présente un workflow par défaut. Pour vous assurer que les modifications apportées au modèle d’état n’ont eu aucun impact négatif sur les workflows, vous devez examiner chacun des workflows par défaut.

    Procédure

    Examinez le workflow pour chaque include de script ChangeRequestStateModel_<type> qui a été modifié.
    Tableau 1. Workflows par défaut des demandes de changement
    Type de changement Nom de l'include de script Workflow
    Normal ChangeRequestStateModel_normal Demande de changement - Normal
    Standard ChangeRequestStateModel_standard Demande de changement - Standard
    Urgence ChangeRequestStateModel_emergency Demande de changement - Urgence

    Les modifications apportées au workflow par défaut pour chaque type de changement dépendent de l’emplacement d’ajout du nouvel état dans les séquences d’états.