2017-10-12 19 views
0

Nous sommes dans le business lead. Nous capturons les prospects et les transmettons aux clients en fonction de certaines règles. intégration à chaque client très dans la nature comme la nature de l'API et dans certains cas, la cartographie des données est également nécessaire. Nous effectuons les étapes suivantes afin de router les prospects vers le client.Besoin d'aide pour choisir le bon modèle de design

  1. Sélectionnez le client
  2. Vérifiez si une cartographie spécifique au client (données de base) est nécessaire.
  3. Envoyer plomb à revendeur disponible (étape optionnelle)
  4. api Appel du client pour envoyer conduire
  5. état push de mise à jour de la tête à la base de données

Notez que certaines des étapes peut être facultative.

Quel modèle de conception serait approprié pour résoudre ce problème. Le motif est de simplifier l'intégration à chaque client.

+0

Peut-être que vous pourriez proposer un couple de conceptions que vous avez envisagé? – dm03514

+0

Vous connaissez un certain nombre de clients? Créez-vous de nouvelles classes lorsque de nouveaux clients viennent gérer leur scénario? – Amit

Répondre

1

Vous voudrez isoler (et de préférence externaliser) les aspects qui diffèrent entre les clients, comme le mappage de données et l'API, et généraliser autant que possible. Une force possible à considérer est la facilité avec laquelle les nouveaux clients et leurs API peuvent être adaptés à l'avenir. Je suppose que vous avez beaucoup de clients et une base de données ou un autre mécanisme persistant qui contient cette liste de clients, donc une logique de routage pilotée par les données qui mappe les prospects aux clients ne devrait pas poser de problème. L'application elle-même devrait être aussi "stupide" que possible.

La mise en correspondance de données est souvent facilement décrite avec des méta-données, et aussi facilement pilotée par les données. Le mappage des méta-données est spécifique au client, de sorte qu'il peut facilement être conservé dans votre base de données associée à chaque client au format XML ou dans un autre format. Si les transformations en leads nécessaires pour se conformer à des API spécifiques sont très complexes, la logique pourrait être isolée grâce à l'utilisation d'un modèle de stratégie, avec la stratégie spécifique sélectionnée en fonction du client cible. Si un nombre extrêmement important de clients et d'API doit être pris en charge, je me mettrais à l'envers pour que l'API soit également pilotée par les données. Si vous n'avez que quelques types de clients (disons moins de 20), j'utiliserais une asynchronicité distribuée, et mon application publierait les informations sur le client et le lead sur un sujet correspondant au type client, et aurait souscrit des processeurs externes spécifiques pour chaque type de client fait leur chose et publie les résultats sur une autre file d'attente unique. Une liste de consommateurs dans la file d'attente des résultats mettrait à jour la base de données.

0

Je partagerai votre relevé de problème en trois parties mentionnées ci-dessous:

1) L'intégration de l'API avec différents clients. 2) Effectuer certaines étapes afin de router les prospects vers le client. 3) Mettre à jour le statut push du lead vers la base de données.

modèles de conception impliqués dans plus de trois parties:

1) Intégration de l'API avec différents clients - Intégration à chaque client varient dans la nature comme la nature de l'API. Il semble que vous ayez un type d'interface incompatible, vous devriez donc concevoir cette section en utilisant "Adapter Design Pattern".

2) Effectuer certaines étapes afin de router les leads vers le client - Vous avez différentes étapes d'exécution. La prochaine étape est basée sur les étapes précédentes. Donc, vous devriez concevoir cette section en utilisant "State Design Pattern".3) Mettre à jour l'état push du prospect dans la base de données: Cette instruction indique que vous souhaitez notifier votre base de données à chaque fois que l'état push du lead arrive pour que les informations soient mises à jour dans la base de données. Donc, vous devriez concevoir cette section en utilisant "Modèle de conception d'observateur".

0

Cela ressemble à cela dans le domaine de workflow. Si vous êtes sur Amazon Web Services, il y a SWF, sinon il y a beaucoup de solutions de workflow pour votre langage de programmation préféré.