Announcement Announcement Module
No announcement yet.
_flowExecutionKey becomes too long with ClientContinuationFlowExecutionRepository Page Title Module
Move Remove Collapse
Conversation Detail Module
  • Filter
  • Time
  • Show
Clear All
new posts

  • _flowExecutionKey becomes too long with ClientContinuationFlowExecutionRepository

    I'm currently working on a project that uses SWF, and the team likes it very much so far. However, we recently ran into a problem when we tried to switch our flow execution repository implementation from the "default" (ContinuationFlowExecutionRepository) to a client based repo (ClientContinuationFlowExecutionRepository).

    The problem we encountered is that since the flow execution is serialized and encoded right into the flowExecutionKey, our URL's are now way too long.

    A "normal" flowExecutionKey when using server-side flow execution storage was around 77 characters in length, but the same flow now produces keys that are in excess of 6380 characters in length, which then end up getting truncated during the next request, and the flow dies.

    There's the setup, here's the question:

    Is there a way to remove the _flowExecutionKey from the URL, and have it simply as a hidden form element? This way, the complete key would be easily transmittable via POST.

    We are currently using SWF version 1.0.4, and Spring 2.0.6.

    The only custom setup we've done so far is alter the key structure. This is a requirement since anything we have in a URL has to be bilingual, unless the word makes no sense. For this reason, we just shortened up the key names so they weren't plain English.

      <bean id="flowExecutionArgumentHandler" class="">
        <property name="flowExecutionKeyArgumentName" value="_flxKy"/>
        <property name="flowIdArgumentName" value="_flId"/>
        <property name="eventIdArgumentName" value="_evId"/>
    This chunk of code also shows that the execution argument handler is expecting its arguments as request parameters. I'm sure this is likely where the solution to my problem lies, but just by browsing through the package, nothing jumped out at me as an alternative that could pull these params from the request or response.

    One last thing. Cutting down on the size of the flow execution (to diminish the size of the resulting serialized object) is not an option. I only mention this because I'm sure the first comment will be "You're execution size is too large, be more efficient".

    Thanks in advance for your help.

    - Andrew