1

I'm in the process of getting my head around UML state digrams while analysing the states that one of our customers can have. I'm attempting to use a composite state with orthogonal regions in which one state in one reason is the trigger for at least one state change in another orthogonal reason.

I realise that I might be trying to use the wrong paradigm to model this, so feel free to correct me on that basis, but there is a simplified but slightly more detailed explanation of the situation for the purposes of this question:

  • A customer's "Active" state has 3 orthogonal regions, I'll call them R1, R2 and R3
  • R1 has "account withdrawal disabled" and "withdrawal enabled" states
  • R2 has "ID not verified" and "ID verified" states
  • R3 has "Cash-only account" and "credit account"

The change in R3 from "cash-only" to "credit" can only occur once R1 is in "withdrawal enabled" state and R2 is in "ID verified" state - plus another trigger.

When drawing the state diagram, is there a valid way to make one state transition in one orthogonal region (at least partially) dependent on a set of states in other orthogonal regions? If not, what other ways could I represent this?

(By the way, I had thought of modelling the account states separately but the discussions in the domain is such here that it feels more useful to integrate that as part of a customer's state)

Thanks in advance for your help.

hendrikus
  • 11
  • 1
  • 1
    Can you include in your question a diagram you've tried already (might be multiple, even those discarded)? While I think I understand the problem I want to be sure about it. Also I'll probably have to ask further questions as modelling of the situation you've described might depend on details. Also make sure to include transitions as it might also impact what you're doing. – Ister Apr 18 '17 at 04:54

1 Answers1

1

I'd use a guard like this

enter image description here

assuming that R1 and R2 are state machines on their own.

Maybe there is a more formally correct way to describe the guard. But I guess a reader can grasp the idea behind it.

qwerty_so
  • 35,448
  • 8
  • 62
  • 86