Particular / ServiceInsight

Advanced debugging for NServiceBus
http://particular.net/serviceinsight
Other
17 stars 32 forks source link

Implement Sequence Diagram (phase 1) #233

Closed dannycohen closed 10 years ago

dannycohen commented 10 years ago
  1. Based on design discussions in #220
  2. Please implement initial design for Sequence Diagram based on latest @sergioc design (see below)

    Designs

01 Normal 02 Saga msg selected 03 Saga msg selected (hover on msg name) 04 Saga msg selected (hover on saga name) 05 Message selected 06 Message selected (hover on name) 07 Saga msg hovered 08 Saga name hovered 09 Timeout hovered 10 Processing error label hovered 11 Endpoint hovered 12 Message handler hovered 13 Message menu 14 Processing failed menu

dannycohen commented 10 years ago

@indualagarsamy -

I don't think its a design smell. In fact if you design it right, it can start with one e/p and then scale to multiple e/ps, if needed.

Agreed, but I have in mind the case where many (many!) messages were stuffed into the same endpoint... Remember that one ? :-)

What about a simple loopback?

Please visualize the simple loopback so that it depicts the same level of complexity described above (https://github.com/Particular/ServiceInsight/issues/233#issuecomment-48277416) and with a scenario like the one described by @SimonCropp (many messages sent by the same handler).

I believe that once you do that, the simple loopback will not be so simple anymore.

udidahan commented 10 years ago

Guys,

I'm concerned about the cost of implementation going up exponentially here for something that is more of an edge case. For now, pick a simple approach and move ahead with implementation.

When we hear from users that they're running into issues, we can reply with "that will be solved in the next version".

dannycohen commented 10 years ago

Agree with @udidahan. @distantcam will share a proposed mockup based on a discussion we've had (which ought to reduce the implementation cimplexity).

distantcam commented 10 years ago

Ok, here's a mockup for showing multiple messages going to the same endpoint.

Header displays a message saying there's multiple messages. Header showing multiple messages

A menu dropdown shows all the messages. Messages dropdown

Message actions popup menu Messages action menu

dannycohen commented 10 years ago

@distantcam - thanks!

Following up on @distantcam mockup:

  1. I like the idea of visualizing that there are multiple messages (of varying types) by displaying a "cascade" of messages, like the following:

image

  1. Clicking on the message can result in a dropdown-like experience like @distantcam is suggesting
  2. Selecting message in the dropdown:
    1. Causes the label to switch to that message's type (e.g. "Order Placed" changes to "OrderProcessed" etc.)
    2. Changes the data displayed by for the handler tooltip that displays message delivery processing statistics (see image here)
    3. Changes the context menu operations to affect the "selected" message

So in essence -

  1. The proposal is that when we have multiple messages sent by a single handler, we will group those messages, and allow the user to select which one to focus on.
  2. The reason why we believe it is a viable option is because Sequence Diagram, is essentially about interactions between endpoints, and it will be very hard to make it display message flows within the same endpoint.
    • For that - you have the Message Flow view (which is optimal for a single endpoint message flow display)

Thoughts ?

sergioc commented 10 years ago

​So is "OrderPlaced" being subscribed by another 1 endpoint 3 times and processing all 3 messages at the same time?​

distantcam commented 10 years ago

@sergioc Well you may have different message names, so the dropdown would reflect that. So it's more the source endpoint handler is sending multiple messages, some which may be OrderPlaced, all going to that destination endpoint.

dannycohen commented 10 years ago

@sergioc -

​So is "OrderPlaced" being subscribed by another 1 endpoint 3 times and processing all 3 messages at the same time?​

Order placed can be subscribed by another endpoint, but once per endpoint. In this case it will draw a dotted (event) line to that endpoint.

processing all 3 messages at the same time

I think we can leave the time dimension aside for now (although @distantcam and I do have a good idea about how to visualize it; let me reach out to you and @udidahan offline in order to discuss the aspect of "parallel" processing and timeline visualization.

distantcam commented 10 years ago

Ok people, this feature is pretty rough, but here's a beta release of Service Insight that has a working sequence diagram.

http://builds.particular.net/repository/download/bt22/51048:id/Output/Particular.ServiceInsight-1.2.0-beta.1.exe

It's not ready for full release yet, but I want people to try it out and suggest improvements here,

distantcam commented 10 years ago

Ok, creeping closer to the 1.2.0 release.

http://builds.particular.net/repository/download/bt22/54286:id/Output/Particular.ServiceInsight-1.2.0-beta.2.exe

I've also added a milestone for the 1.2.0 release. I'm making the call that any features not part of the milestone won't be done until after the 1.2.0 release.

andreasohlund commented 10 years ago

@dannycohen please take it for a spin

Sent from my iPhone

On 08 Sep 2014, at 07:43, Cameron MacFarland notifications@github.com wrote:

Ok, creeping closer to the 1.2.0 release.

http://builds.particular.net/repository/download/bt22/54286:id/Output/Particular.ServiceInsight-1.2.0-beta.2.exe

I've also added a milestone for the 1.2.0 release. I'm making the call that any features not part of the milestone won't be done until after the 1.2.0 release.

— Reply to this email directly or view it on GitHub.

dannycohen commented 10 years ago

@distantcam / @andreasohlund -

Comparing this beta to the list of requirements in https://github.com/Particular/Requirements/issues/60#issuecomment-53399781:

(I highlighted in bold the ones I consider as important for LM3 release)

  1. Not implemented (optional)
  2. Not implemented (optional)
  3. Not implemented
  4. Not implemented (optional)
  5. Not implemented (optional)
  6. Partially implemented
  7. Partially Implemented (no link to exception details & stacktrace)
  8. Fixed
  9. Not implemented
  10. Not implemented
  11. Not implemented
  12. Obsolete requirement
  13. Not implemented
  14. Implemented
  15. Implemented
  16. Implemented
distantcam commented 10 years ago

3, 13 are issue #375 11 is issue #376 7 I missed, now issue #377

dannycohen commented 10 years ago

@distantcam - thanks; continuing discussion in relevant GH Issues.

dannycohen commented 10 years ago

@distantcam - short question regarding all 3 issues ( #375, #376, #377 ) -

They are marked to milestone 1.2.0. Do you foresee any issues that may cause them not to be included in 1.2.0 ? (I am asking whether there's an implementation risk involved for these issues for LM3)

// CC @andreasohlund , @sfarmar

distantcam commented 10 years ago

@dannycohen The only one I don't know how long it'll take to implement is #375. The others I don't see having problems.

dannycohen commented 10 years ago

@distantcam - Thanks. Lets continue discussing specifically regarding #375 in the relevant GH Issue.

dannycohen commented 10 years ago

@distantcam - 1 more feedback:

Item 4 on the requirements list:

Highlight the message that's currently selected in message list (similar to Message Flow highlighting) (Cool, Nice to have to LM3)

When playing with the Sequence diagram its lack makes it uncelar which is currently selected message (e.g. the message I want to focus on within the general context).

what would be the effort of including this highlight feature in 1.2.0 ?

distantcam commented 10 years ago

@dannycohen Should be possible to do. Added as issue #379