Craig,

Your Workflow Proposal seems like a great start. Several of us have
played around with some workflow concepts on our current project but it
would be great to have something integrated into Struts.

We have a few concepts that weren't mentioned that we think are worth
considering:

  - "bookmarkable" workflow steps: This means being able to  
    store all context related to a step in such a fashion that
    the user can go back to that same the same state in the 
    workflow at a later time. Bookmarkability should be 
    optional (some steps may not make sense to be bookmarked) 
    and so it should be able to be indicated as such when 
    being defined.

  - a workflow "history": keep a state of where the user is 
    and/or has been. Allow this state to be displayed as 
    breadcrumbs, a history list, or with another visual or 
    navigational representation. A tag to render this 
    information seems useful as well.

  - workflows, especially scripted workflows, will often be 
    customized. The workflow configuration files should support the
    ability to override a workflow definition - one possibility
    would be to use a mechanism similar to a Java classpath. The
    primary concern here is updating installations with new
    versions of out-of-the-box workflows without overwriting any
    customized versions of those workflows.

  - when a workflow is started, it should be associated with a
    context that is specific to that *instance* of the workflow.
    This supports the ability for a single user to execute the
    same workflow multiple times simultaneously. In a web UI, this
    is usually associated with a user opening multiple
    windows. This implies that a workflow must have some kind of
    instance id to uniquely identify its context and also makes it
    clear that some kind of garbage-collection capability is
    needed for workflows.

  - the workflow configuration files/interfaces should support
    i18n especially for labels since the labels will likely
    appear in UI menus.

  - the ability to define pre- and post- conditions (inputs/outputs) 
    for workflow steps would aid in robusting such as ensuring valid 
    workflow definitions.

A few basic questions that we have:

  - Can you give some more detail on your initial thoughts for the
    Struts implementation? The types of questions I have are:

    o Where do Actions fit in with workflows/activities in
      general? Are they used entirely behind the scenes when you
      write the XML for an activity?  From the proposal
      description, it sounds as if writing an Activity will not
      require Struts coding... do this imply it will generate the
      necessary Actions, etc?

    o Would things like Actions, ActionForms, and JSP pages need
      to be written so they are "workflow aware"?

    o Are you thinking you'd extend ActionMappings to have another
      layer where they can handle Activities or something else?
      Here we're wondering if there's a way to retain the overall
      model programming in Struts but allowing non-programmers to
      create workflows.

  - Do you think browser issues can be handled properly? Caching
    has caused us problems in the areas of handling back, forward,
    refresh buttons... for example, the previous page displays
    correctly but the actual state of the workflow has not been
    updated due to the page being cached and the context state is
    incorrect.

thanks,
john sigler

Reply via email to