2
votes

Comment supprimer une valeur de la collection en utilisant Impex dans HYBRIS?

J'essaie d'étendre l'OOTB Impex pour supprimer customersupportagentrole du customersupportmanagergroup mais cela ne fonctionne pas. Veuillez aider.

Ceci est OOB Impex.

INSERT_UPDATE CsAgentGroup;UID[unique=true];locname[lang=en];groups(uid)[mode=append];description
;customersupportmanagergroup;Customer Support Manager Group;customersupportmanagerrole,csagentgroup,csagentmanagergroup;The Customer Support Manager Group has access to the Customer Support Backoffice's Customer Support Manager Group and Customer Support Agent Group views AND/OR the Assisted Service Module.
;customersupportagentgroup;Customer Support Agent Group;customersupportagentrole,csagentgroup;The Customer Support Agent Group has access to the Customer Support Backoffice's Customer Support Agent Group views and AND/OR the Assisted Service Module.

Ceci est mon Impex pour supprimer customersupportagentrole du customersupportmanagergroup

INSERT_UPDATE CsAgentGroup;UID[unique=true];locname[lang=en];groups(uid)[mode=append];description
;customersupportmanagergroup;Customer Support Manager Group;customersupportmanagerrole,customersupportagentrole,csagentgroup,csagentmanagergroup;The Customer Support Manager Group has access to the Customer Support Backoffice's Customer Support Manager Group and Customer Support Agent Group views AND/OR the Assisted Service Module.
;customersupportagentgroup;Customer Support Agent Group;customersupportagentrole,csagentgroup;The Customer Support Agent Group has access to the Customer Support Backoffice's Customer Support Agent Group views and AND/OR the Assisted Service Module.


0 commentaires

4 Réponses :


2
votes

Vous devez supprimer les éléments existants dans votre impex.

Sous le code, supprimez l'élément CsAgentGroup (merci @FarrukChishti pour votre attention)

REMOVE PrincipalGroupRelation;source[unique=true](uid);target[unique=true](uid)
;customersupportmanagergroup;customersupportagentrole

Nous devons supprimer uniquement la relation afin de pouvoir supprimer l'élément du type de relation comme ci-dessous ou mettre à jour les réponses existantes comme d'autres.

REMOVE CsAgentGroup;UID[unique=true];groups(uid)
;customersupportmanagergroup;customersupportagentrole


2 commentaires

Cet impex supprimera le customersupportmanagergroup de la base de données au lieu de supprimer le customersupportagentrole du customersupportmanagergroup.


@mkysoft: la requête REMOVE supprimera l'instance customersupportmanagergroup de la base de données. OP souhaite mettre à jour customersupportmanagergroup de manière à ce que customersupportmanagergroup ne soit plus attaché à customersupportmanagergroup, mais il souhaite toujours conserver customersupportmanagergroup dans la base de données.



3
votes

Vous utilisez mode=append qui ajoutent essentiellement vos valeurs à la collection (groupes) existante. Dans votre cas, certains Impex (OOTB) peuvent déjà ajouter customersupportagentrole au customersupportmanagergroup avant que votre Impex ne soit exécuté. Maintenant, votre Impex ne remplacera pas la valeur existante, il ajoute simplement. Essayez donc d'utiliser mode=replace , qui remplacent essentiellement les valeurs existantes.

INSERT_UPDATE CsAgentGroup; UID[unique=true]            ; groups(uid)[mode=replace]                                   ;                  
                          ; customersupportmanagergroup ; customersupportmanagerrole,csagentgroup,csagentmanagergroup ;                  
                          ; customersupportagentgroup   ; customersupportagentrole,csagentgroup                       ;                  


7 commentaires

Cet impex supprimera le customersupportmanagergroup de la base de données au lieu de supprimer le customersupportagentrole du customersupportmanagergroup.


@FarrukhChishti - Pouvez-vous expliquer votre commentaire.


Supprimer la requête supprimera le customersupportmanagergroup de la base de données. Il sera supprimé de tous les types qui l'ont comme attribut. OP souhaite mettre à jour le customerupportmanagergroup tout en conservant le customersupportmanagergroup et le customersupportagentrole dans la base de données.


Ça n'a pas de sens. J'ai utilisé INSERT_UPDATE, alors quel point de supprimer la requête ici? une autre chose que les groupes stockent dans une autre table de relations, comment peut-elle supprimer la source?


La deuxième requête, c'est-à-dire REMOVE CsAgentGroup; UID [unique = true]; groups (uid); customersupportmanagergroup; customersupportagentrole supprimera le customersupportmanagergroup de la base de données.


Cette requête est correcte. La première requête avec INSERT_UPDATE est correcte. La deuxième requête avec REMOVE est incorrecte.


continuons cette discussion dans le chat .



0
votes

Vous souhaitez mettre à jour customersupportmanagergroup afin que tout lien reliant customersupportmanagergroup à customersupportagentrole soit supprimé pendant que le customersupportagentrole existe toujours dans la base de données. L'utilisation de la requête de suppression supprimera customersupportagentrole de la base de données.

UPDATE CsAgentGroup;UID[unique=true];groups(uid)
;customersupportmanagergroup;customersupportmanagerrole,csagentgroup,csagentmanagergroup


0 commentaires

1
votes

Vous pouvez le faire comme ceci, si vous n'utilisez pas l'opérateur de mode dans les groupes, il remplacera la collection par les composants que vous spécifiez

INSERT_UPDATE CsAgentGroup; UID [unique = vrai]; groupes (uid) ;; customersupportmanagergroup; csagentgroup, csagentmanagergroup;

ou si vous mettez [mode = remove], il supprimera le composant que vous spécifiez

INSERT_UPDATE CsAgentGroup; UID [unique = vrai]; groupes (uid) [mode = supprimer] ;; customerupportmanagergroup, customerupportmanagerrole;


0 commentaires