Today I have a conversation with one of my collegues, we discuss about the interface between two systems: java and ciboodle.
In the this case the direction is JAVA verso ciboodle, but I can see two approaches:
We could see ciboodle as a listener of java, so the method exposes will be "onJavaAction" (onATRFailure), and them implement whatever is relevant to ciboodle
The other will be having ciboodle to expose a "createCase" service.
Notice that the method name its very important here because it drives the approach versus a listener or in the second case versus a service method.
So lets have a look at the arguments behind each solution. In the first case, the implementation seems more flexible. The method will not have to change if ciboodle needs to do an extra step like creating another task. ciboodle get the information from the JAVA notification and he can do whatever is required.
For the second case the argument is that exposing a web service should be expose in terms of the system, and therefore it will not make sense to expose a method in system as listener of other system. One of the things that doesn't seem to fit is when JAVA communicates the type of ATR that it was processing. It uses an enum. Defining a web service interface that uses an enum of another system it seems weir. In the best scenario you can imported to your system, other ways you have to duplicate. But even if it make sense to import it doesn't seem right to use these concepts as API of call center system.
The argument is between call the method: createWorkItem(priority, target,...)
or onFailedATRRecover(failedATR)
in the second scenario failedATR, contains a type which a distinction java does to implement their logic.
It reminded me of this video from Kevin Rutherford
Kevin, uses a listener approach. Where the system notifies to a bus the event that has ocurred, "FailedATR". The event at this point is the message that systems are using to communicate and both system should know about it (how to create, how to parse it).
Where these events belong to? Java project? Ciboodle project? Or a whole new project that I am missing?
In the this case the direction is JAVA verso ciboodle, but I can see two approaches:
We could see ciboodle as a listener of java, so the method exposes will be "onJavaAction" (onATRFailure), and them implement whatever is relevant to ciboodle
The other will be having ciboodle to expose a "createCase" service.
Notice that the method name its very important here because it drives the approach versus a listener or in the second case versus a service method.
So lets have a look at the arguments behind each solution. In the first case, the implementation seems more flexible. The method will not have to change if ciboodle needs to do an extra step like creating another task. ciboodle get the information from the JAVA notification and he can do whatever is required.
For the second case the argument is that exposing a web service should be expose in terms of the system, and therefore it will not make sense to expose a method in system as listener of other system. One of the things that doesn't seem to fit is when JAVA communicates the type of ATR that it was processing. It uses an enum. Defining a web service interface that uses an enum of another system it seems weir. In the best scenario you can imported to your system, other ways you have to duplicate. But even if it make sense to import it doesn't seem right to use these concepts as API of call center system.
The argument is between call the method: createWorkItem(priority, target,...)
or onFailedATRRecover(failedATR)
in the second scenario failedATR, contains a type which a distinction java does to implement their logic.
It reminded me of this video from Kevin Rutherford
Kevin, uses a listener approach. Where the system notifies to a bus the event that has ocurred, "FailedATR". The event at this point is the message that systems are using to communicate and both system should know about it (how to create, how to parse it).
Where these events belong to? Java project? Ciboodle project? Or a whole new project that I am missing?
No hay comentarios:
Publicar un comentario