I have an architectural question on message processing. For the purposes of this question, transport does not matter, so I will not indicate it.
Let's say we have three systems: website, CRM and ERP. For this, for example, ERP will be the "main" system in terms of data ownership. Website and CRM can send a new client message to the ERP system. The ERP system then adds the client and publishes the client with the newly assigned account number so that the website and CRM can add the account number to their local customer records. This is a fairly straightforward process.
Then we move on to placing orders. The account number is required in ordering a CRM or website to place an order in the ERP system. However, CRM will allow the user to place an order, even if the customer does not have an account number. (For this example, suppose we cannot change the behavior of CRM). This creates the likelihood that the user can create a new customer and place an order before receiving the account number updated in CRM.
What is the best way to handle this scenario? Would it be better to send the order number of the message sans account number and let it go into the error queue? Would it be better for the CRM endpoint to hold the message and wait until the account number is updated in CRM? Maybe completely different, which I did not think about?
Thanks in advance for your help.
, CRM . CRM ERP ERP- > CRM, CRM . , CRM ERP, , , ERP. CRM , ERP.
, /.
CRM ERP - .
CRM , . , ERP . CRM ERP ; CRM- - , ERP - -.
CRM ERP New Customer New Order. CRM ERP. , ERP , , ERP New Customer; " " CRM, CRM ERP. ERP , CRM, , , ERP.
, New Order , New Customer , . ERP- New Customer, . , , - , ERP , , CRM-.
" " , ERP? , " ", " " " ".
Queues are not very suitable for service management scenarios. I would recommend exploring Cadence Workflow , which would greatly simplify the implementation and give a complete picture of the state of your interaction.
Check out this presentation that describes the Cadence programming model.
Source: https://habr.com/ru/post/1740618/More articles:Square number in NASM assembly without multiplication - assemblyHow to create a runtime protocol in Objective-C? - objective-c$ .each and confusion animations - jqueryEasy loading of flash objects - javascriptMinGW error "undefined reference to 'typeof' '" - cApp Engine - Objectify - saving byte [] - google-app-engineFailed to execute DBD :: SQLite :: st: data mismatch - perlWhat is the most efficient way to solve a system of equations containing a dimam function? - mathKeep your Windows Mobile 6 Phone Alive - c #WinForms/консольное приложение в Mono, как узнать, что он работает от root - c#All Articles