Announcement Announcement Module
No announcement yet.
Flow level inheritance and flow definitions' validity Page Title Module
Move Remove Collapse
Conversation Detail Module
  • Filter
  • Time
  • Show
Clear All
new posts

  • Flow level inheritance and flow definitions' validity


    I have a question about flow inheritance and flow XML definitions' validity.

    I have some abstract - reusable and not directly executable - flows: let's say AbstractFlow_A, AbstractFlow_B, AbstractFlow_C.

    Each abstract flow may contain many states.

    Then I have other abstract and shared flows containing common end states and global transitions: let's say AbstractCommonStatesFlow_1 and AbstractCommonStatesFlow_2.

    Now I need to compose some concrete flows - using flow level inheritance - like this:

    - AbstractFlow_A + AbstractCommonStatesFlow_1 = ConcreteFlow_A_CS1 (parent = "AbstractFlow_A, AbstractCommonStates_1")

    - AbstractFlow_B + AbstractCommonStatesFlow_1 = ConcreteFlow_B_CS1 (parent = "AbstractFlow_B, AbstractCommonStates_1")


    - AbstractFlow_B + AbstractCommonStatesFlow_2 = ConcreteFlow_B_CS2 (parent = "AbstractFlow_B, AbstractCommonStates_2")

    - AbstractFlow_C + AbstractCommonStatesFlow_2 = ConcreteFlow_C_CS2 (parent = "AbstractFlow_C, AbstractCommonStates_2")

    These concrete flows are simply the result of a merge and DON'T define other own steps.

    These concrete flows are used as sub-flows in other "high-level" flows (the ones actually executed by users):

    - MainFlow_1, which uses ConcreteFlow_A_CS1 and ConcreteFlow_B_CS1 as sub-flows (notice that common end states - CS1 - are shared and this allows to jump backward and forward from any point of the main flow)

    - MainFlow_2, which uses ConcreteFlow_B_CS2, ConcreteFlow_C_CS2 as sub-flows (notice that common end states - CS2 - are shared and this allows to jump backward and forward from any point of the main flow)

    Everything works fine and flows are perfectly composed.

    *** BUT ***, even if my app works properly, STS says that ConcreteFlow_A_CS1, ConcreteFlow_B_CS1, ConcreteFlow_B_CS2, ConcreteFlow_C_CS2 contain an error because a "start state is missing"; I've found two ways to avoid this warning:

    1) adding an empty start-state attribute:

    HTML Code:
    <flow... parent="AbstractFlow_A, AbstractCommonStates_1" start-state=""><!--no own states--></flow>
    2) adding a start-state attribute containing the id of the parent flow's start-state

    HTML Code:
    <flow... parent="AbstractFlow_A, AbstractCommonStates_1" start-state="id-of-AbstractFlow_A-start-state"><!--no own states--></flow>

    - Can I use flow level inheritance to have a simple merge without other child flow's states?

    - If a simple merge is allowed, have I anyway to declare a start state in child flow?

    Thank you very much!


    Last edited by emilio.remogna; Feb 7th, 2013, 05:04 PM. Reason: typo

  • #2
    Please, can anybody answer this question? Or help me to find docs about? I've read the reference manual, but didn't find anything so specific.

    Thank you very much!

    Best regards.