9
votes

Comment annuler la mise à jour requérante

Mise à jour de l'objet via GWT RPC peut facilement être annulé. Nous devons cloner l'état de l'entité précédente dans la mémoire et l'appliquer à l'annulation.

Mais lorsque nous utilisons DemandeFactory, il n'existe aucune opération de mise à jour concrète. Demandactory envoie des modifications de l'entité sur le serveur et met à jour les entités de référentiel lui-même. Nous ne pouvons pas intercepter le processus de mise à jour.

Comment puis-je implémenter Annuler pour les mises à jour effectuées avec Demandactory?


1 commentaires

Utilisez-vous l'InstanCereQuest ou simplement la demande dans RF d'invoquer la persistance?


3 Réponses :


0
votes

La demande d'usine ne met pas à jour l'entité du serveur, jusqu'à ce que vous déclenche la demande. Vous pouvez donc simplement éviter de passer un appel au feu (), pour éviter les modifications sur le serveur. J'espère que c'est ce que vous vouliez dire. Pouvez-vous publier le code qui démographie la façon dont vous mettez à jour l'entité et où vous souhaitez effectuer l'annulation?


1 commentaires

"Annuler" signifie que des modifications sur le serveur étaient déjà effectuées. J'ai besoin d'intercepter l'opération de mise à jour du serveur pour sauver l'état de l'entité pour futurs annulaires.



0
votes

Je ne sais pas si vous souhaitez faire cela. Pour cela, disons que vous voulez annuler les changements d'une classe, disons le contact, ajouter un champ du même type, comme l'état précédent (faites-la simplement être transitoire si vous ne voulez pas que ce soit pour gâcher votre persistance) afin que le La classe ressemble à ceci: xxx

maintenant dans votre appel persist, sauvegardez les données actuelles dans le précédentState, puis persistez l'entité de contact actuelle. Dans l'annulation, Copier les données de précédentState sur "Ceci".

Annuler n'a aucun sens sur le serveur, de telles choses doivent être gérées sur le client. Je n'ai pas rencontré aucun scénario dans lequel une fonctionnalité d'annulation est requise sur le serveur. Alors s'il vous plaît citer le scénario et le code à travers lequel vous souhaitez accomplir cela.


3 commentaires

Pour effectuer une annulation sur le client uniquement, vous devez conserver tout votre état d'application sur le client. Pensez-vous que cela est possible dans une application GWT?


C'est certainement, mais vous n'auriez pas besoin de l'ensemble de l'état de l'application, une entité comme une entité de contact dans une application d'adresse portant sur une application d'adresse est ce que vous seriez intéressé par "annuler" ing?


Non tu as tort. Considérez une liste de contacts commandée par exemple.



1
votes

Vous devez rechercher la modification de vos structures et tables de données côté serveur. Incorporer un modèle temporel ou bitemporal là-bas. Ne vous inquiétez pas d'essayer de tenir des "vieux" états d'entités en mémoire ou de les intercepter. Gardez les états précédents d'entités intactes avec les champs de temps. Annuler signifie localiser une version antérieure par horodatage et le rendre courant. Vous pouvez le faire sur plusieurs types d'entité simultanément.

  • 01:00 Pizza A Sauvé
  • 01:01 Pizza A Ingrédients changés
  • 01:02 Pizza A Ingrédients changés
  • 01:03 Annuler à 01:01

    Si vous voulez, vous pouvez balayer périodiquement votre base de données et nettoyer les anciennes versions. Le style «APPEND-SEUL» d'écrivies temporelles peut également donner des avantages de performance.


0 commentaires