Search code examples
umlactivity-diagram

Activity Diagram: Continuous activity triggering event


I'm having trouble modelling a continuous event as well as an activity that happens as part of that continuous event.

I am modelling the tracking of a website by a Marketing Automation platform. However the tracking is a continuous event constantly happening. A part of this tracking is the 'form submit'. This however triggers a new flow of activities creating a contact in the CRM.

Questions: 1. How do I make an activity in 'Tracking' invoke a new flow of activities if a form is submitted? 2. If I model this by using a fork: both (Tracking and form submit) need to occur before the flow is continued.

I basicly need a fork where one flow is optional.

Kind regards,

--- If I made any mistakes regarding posting, please direct me to the correct location / nescecary corrections ---

Overview Website Tracking


Solution

  • Basically you are right: you use a fork to create a "forked off" flow. Like @JimlL. I have trouble understanding the details of your question. But basically fork is the way to go.

    A few remarks to your diagrams:

    • The first has a ConditionalNode with no alternatives. That's pretty pointless. I guess you just miss a path down to bypass Log Tracking
    • The second has an unguarded, unconditional flow top from a fork to a join. That's pointless and you should just remove the flow.
    • The Form not filled and No form on page flows are also pointless without connected actions (which should likely be some error actions).
    • The Yes/No should be written in brackets (like [Yes]) to make them guards, which the actually are. I guess the other named flows should also rather be guards.

    The fork following Form submit actually does, what you are asking for.

    Activity diagrams are derived from Petri nets. You need to imagine a virtual token traveling along the control flows. A fork will fire as many tokens as it has outgoing flows on receipt of an ingoing token. A join will only send outgoing token(s; depending on the number of outgoing flows) once it has received a single token on each incoming flow.