Announcement Announcement Module
Collapse
No announcement yet.
Missing State for State Transition. Page Title Module
Move Remove Collapse
X
Conversation Detail Module
Collapse
  • Filter
  • Time
  • Show
Clear All
new posts

  • Missing State for State Transition.

    Hi,

    We are getting a Missing state for [StateTransition: [state=delta-job.update-ods.5.update-life-contracts-step, pattern=*, next=delta-job.update-ods.5.update-life-contract-details-step]] when using the attached job description.

    When we debug to the org.springframework.batch.core.job.flow.support.Si mpleFlow class to line 237 where the exception is being thrown, we notice that the stateMap has actually got "delta-job.update-ods.5.delta-job.update-life-contract-details-step" but not the delta-job.update-ods.5.update-life-contract-details-step" as being looked up in the state map.

    Are we missing something here ?

    I have included the actual XML content as it seems no one has viewed the attached zip .

    Code:
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:batch="http://www.springframework.org/schema/batch"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="
           http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
           http://www.springframework.org/schema/batch http://www.springframework.org/schema/batch/spring-batch.xsd">
    
        <!-- Define the Delta Job -->
        <batch:job id="delta-job">
    
            <!-- Update System Code, Update Txn Client, and Update Txn Adviser Jobs Split -->
            <batch:split id="initialize-etl" next="update-ods">
    
                <!-- Update the System Code Table -->
                <batch:flow>
                    <batch:step id="update-system-code-step">
                        <batch:job ref="update-system-code-job"/>
                    </batch:step>
                </batch:flow>
    
                <!-- Update the Txn Client Table -->
                <batch:flow>
                    <batch:step id="update-txn-client-step">
                        <batch:job ref="update-txn-client-job"/>
                    </batch:step>
                </batch:flow>
    
                <!-- Update the Txn Adviser Table -->
                <batch:flow>
                    <batch:step id="update-txn-adviser-step">
                        <batch:job ref="update-txn-adviser-job"/>
                    </batch:step>
                </batch:flow>
    
            </batch:split>
    
            <!-- Update ODS -->
            <batch:split id="update-ods">
    
                <!-- Update the Client Tables -->
                <batch:flow>
                    <batch:step id="update-clients-step">
                        <batch:job ref="update-clients-job"/>
                    </batch:step>
                </batch:flow>
    
                <!-- Update the Sum Assured at Risk -->
                <batch:flow>
                    <batch:step id="update-sum-assured-at-risk-step">
                        <batch:job ref="update-sum-assured-at-risk-job"/>
                    </batch:step>
                </batch:flow>
    
                <!-- Update the Addresses -->
                <batch:flow>
                    <batch:step id="update-addresses-step">
                        <batch:job ref="update-addresses-job"/>
                    </batch:step>
                </batch:flow>
    
                <!-- Reload Agency Relation -->
                <batch:flow>
                    <batch:step id="reload-agency-relation-step">
                        <batch:job ref="reload-agency-relation-job"/>
                    </batch:step>
                </batch:flow>
    
                <!-- Reload Advisers -->
                <batch:flow>
                    <batch:step id="reload-advisers-step">
                        <batch:job ref="reload-advisers-job"/>
                    </batch:step>
                </batch:flow>
    
                <!-- Update Contracts, and Components -->
                <batch:flow>
    
                    <!-- Update Contracts -->
                    <batch:step id="update-life-contracts-step" next="update-life-contract-details-step">
                        <batch:job ref="update-life-contracts-job"/>
                    </batch:step>
    
                    <!-- Update the Components, Client Contract Details -->
                    <batch:split id="update-life-contract-details-step">
    
                        <!-- Update Life Components -->
                        <batch:flow>
                            <batch:step id="update-life-components-step">
                                <batch:job ref="update-life-components-job"/>
                            </batch:step>
                        </batch:flow>
    
                        <!-- Update the Client Contracts -->
                        <batch:flow>
                            <batch:step id="update-client-contracts-step">
                                <batch:job ref="update-client-contracts-job"/>
                            </batch:step>
                        </batch:flow>
    
                        <!-- Reload the Life Contract Values -->
                        <batch:flow>
                            <batch:step id="reload-life-contract-values-step">
                                <batch:job ref="reload-life-contract-values-job"/>
                            </batch:step>
                        </batch:flow>
    
                        <!-- Reload the Life Contract Followup -->
                        <batch:flow>
                            <batch:step id="reload-life-contract-followup-step">
                                <batch:job ref="reload-life-contract-followup-job"/>
                            </batch:step>
                        </batch:flow>
    
                    </batch:split>
    
                </batch:flow>
    
            </batch:split>
    
        </batch:job>
    
    </beans>
    Would really appreciate some guidance on this matter as it is holding us back from moving forward.


    Thanks and regards

    Kodarc
    Last edited by Kodarc; Dec 14th, 2010, 06:59 AM. Reason: No responses thus far :(

  • #2
    Does anyone have any suggestions for the issue mentioned ??


    Thanks and regards

    Kodarc

    Comment


    • #3
      Could be a bug - I doubt if anyone ever tried using a split inside a split. Does it work if you put the update-life-contracts-step outside the outer split and remove the inner one?

      Comment


      • #4
        Hi Dave,

        Once I move the update-contracts-step out of the main split into it's own step and then move on to another split it works fine.

        The new configuration is as follows

        Code:
        <?xml version="1.0" encoding="UTF-8"?>
        <beans xmlns="http://www.springframework.org/schema/beans"
               xmlns:batch="http://www.springframework.org/schema/batch"
               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
               xsi:schemaLocation="
               http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
               http://www.springframework.org/schema/batch http://www.springframework.org/schema/batch/spring-batch.xsd">
        
            <!-- Define the Delta Job -->
            <batch:job id="delta-job">
        
                <!-- Update System Code, Update Txn Client, and Update Txn Adviser Jobs Split -->
                <batch:split id="initialize-etl" next="update-ods">
        
                    <!-- Update the System Code Table -->
                    <batch:flow>
                        <batch:step id="update-system-code-step">
                            <batch:job ref="update-system-code-job"/>
                        </batch:step>
                    </batch:flow>
        
                    <!-- Update the Txn Client Table -->
                    <batch:flow>
                        <batch:step id="update-txn-client-step">
                            <batch:job ref="update-txn-client-job"/>
                        </batch:step>
                    </batch:flow>
        
                    <!-- Update the Txn Adviser Table -->
                    <batch:flow>
                        <batch:step id="update-txn-adviser-step">
                            <batch:job ref="update-txn-adviser-job"/>
                        </batch:step>
                    </batch:flow>
        
                </batch:split>
        
                <!-- Update ODS -->
                <batch:split id="update-ods" next="update-life-contracts-step">
        
                    <!-- Update the Client Tables -->
                    <batch:flow>
                        <batch:step id="update-clients-step">
                            <batch:job ref="update-clients-job"/>
                        </batch:step>
                    </batch:flow>
        
                    <!-- Update the Sum Assured at Risk -->
                    <batch:flow>
                        <batch:step id="update-sum-assured-at-risk-step">
                            <batch:job ref="update-sum-assured-at-risk-job"/>
                        </batch:step>
                    </batch:flow>
        
                    <!-- Update the Addresses -->
                    <batch:flow>
                        <batch:step id="update-addresses-step">
                            <batch:job ref="update-addresses-job"/>
                        </batch:step>
                    </batch:flow>
        
                    <!-- Reload Agency Relation -->
                    <batch:flow>
                        <batch:step id="reload-agency-relation-step">
                            <batch:job ref="reload-agency-relation-job"/>
                        </batch:step>
                    </batch:flow>
        
                    <!-- Reload Advisers -->
                    <batch:flow>
                        <batch:step id="reload-advisers-step">
                            <batch:job ref="reload-advisers-job"/>
                        </batch:step>
                    </batch:flow>
        
                </batch:split>
        
        
                <!-- Update Contracts -->
                <batch:step id="update-life-contracts-step" next="update-life-contract-details-step">
                    <batch:job ref="update-life-contracts-job"/>
                </batch:step>
        
        
                <!-- Update the Components, Client Contract Details -->
                <batch:split id="update-life-contract-details-step">
        
                    <!-- Update Life Components -->
                    <batch:flow>
                        <batch:step id="update-life-components-step">
                            <batch:job ref="update-life-components-job"/>
                        </batch:step>
                    </batch:flow>
        
                    <!-- Update the Client Contracts -->
                    <batch:flow>
                        <batch:step id="update-client-contracts-step">
                            <batch:job ref="update-client-contracts-job"/>
                        </batch:step>
                    </batch:flow>
        
                    <!-- Reload the Life Contract Values -->
                    <batch:flow>
                        <batch:step id="reload-life-contract-values-step">
                            <batch:job ref="reload-life-contract-values-job"/>
                        </batch:step>
                    </batch:flow>
        
                    <!-- Reload the Life Contract Followup -->
                    <batch:flow>
                        <batch:step id="reload-life-contract-followup-step">
                            <batch:job ref="reload-life-contract-followup-job"/>
                        </batch:step>
                    </batch:flow>
        
                    <!-- Reload the Fund Holding -->
                    <batch:flow>
                        <batch:step id="reload-fund-holding-step">
                            <batch:job ref="reload-fund-holding-job"/>
                        </batch:step>
                    </batch:flow>
        
                </batch:split>
        
        
            </batch:job>
        
        </beans>
        It might seem that a split within a split is not currently possible. Is this behaviour intended ? Do not recall reading anywhere in the documentation that this is not allowed.

        Regards

        Kodarc

        Comment


        • #5
          Hi,

          We also faced the same issue when we were trying to create a split within another split. Though we can modify the workflow, it would be really helpful and it would save a lot of time for us to have this feature. Is this feature anywhere in the pipeline?

          Thanks,
          Gayathri

          Comment

          Working...
          X