AW: Passing a new container or struct to / from WF template.

Michael Pokraka workflow at quirky.me.uk
Thu Feb 10 04:43:51 EST 2005


Hi Rick, 
I totally agree with the 'least amount of moving parts' theory, a rather nice
way to put it. 
To answer your question, a container is just a table. So you can create a
multiline element 'Container' and pass this around to your heart's content.
I've a feeling this is too simple an answer - am I missing the question? 

To add another completely inexpert 2p's worth, I still don't agree that this is
really necessary (in most cases). Have a look at note 125400. It's a small
matter of thinking before each change and copying into a new flow if
appropriate - or if in doubt :-)  After a while it becomes automatic, and I'm
quite happy for most part with the way versioning works. 

Our biggest flows at my current site have 10-15 elements, most of them flags
used internally. The real data lives in attributes. Bindings are generally in
the order of 1-3 elements and rarely change once set. All a matter of design
really :-) And there are a lot of flows throughout many areas. One notable
exception I've already mentioned is HTML forms - ESS Leave request!!! (Oh, and
a SAP standard QM rule with over 200 elements). I've thought about modding
leave requests, but it's a very finnicky beast with umpteen notes and best left
as close to the original as possible (got burnt here). 

Cheers
Mike

--- Rick Sample <Rick.Sample at gbe.com> wrote:

> >>If that wasn't an 'expert' answer, I don't know what is :-) Not
> because of the amount of suggestion...
> Mike,
> Just too funny! 
> 
> All,
> Any way, If SAP Business Objects were truly OO I would not be having
> this conversation. 
> But I am not going there. SAP 4.6C. It is what it is...
> 
> So, with that said, all I need to know is how (if possible) to pass a
> container to a container. 
> Example: Create a container inside a BO method and pass to the Task to
> the WF Template. 
> Possible? If so, what is the object name? Any SAP given generic objects
> / structs so I don't 
> have to develop from scratch? I can't seem to find what I need. 
> 
> If I can pass custom structures or containers around I can leave my WF
> Template alone 
> and won't have to create new containers in a dozen places, deal the
> bindings, 
> re-test the entire WF Process, and then clean up in isle 9 for all the
> old WFs that do 
> not have the same containers and bindings. 
> 
> I could always modify my BO or create yet another one but I will still
> have the 
> issue of data persistence. (Or the lack there of). 
> I would still have to create yet another table(s) just to hold temp
> data. Not what I want. 
> 
> The approach I am looking for is to "touch" the least amount of moving
> parts and 
> shorten the testing time. It would be a beautiful thing... eh Mike?
> 
> 
> 
> >> Have you thought of the implications :  workflow definitions have
> versions,
> >> a started workflow proceeds until completed within the same
> workflow
> Not only thought about them but got burned by them. 
> Change a Task and it will be picked but in the new AND old WF
> templates. 
> Change an BO method it will be picked but in the new AND old WF
> templates. 
> Don't even get me started about the versioning of WF Templates. Not
> only totally useless but dangerous. 
> This is why I want to pass a struct or container so I won't have to
> worry about missing containers 
> in a WF that is only partially completed. Change the code, don't worry
> about the template. 
> 
> 
> 
> 
> 
> >>> workflow at quirky.me.uk 2/9/2005 11:10:21 >>>
> If that wasn't an 'expert' answer, I don't know what is :-) Not because
> of the
> amount of suggestions but also their very sensible nature.
> 
> Expert or not, my idea is also to minimize the use of containers
> elements. If
> you have more than 10 or 15, your design can do with improvements - can
> it not
> move into an attribute? There are obviously a few exceptions, the most
> notable
> is with HTML forms - and those are a right PITA. Perhaps consider
> small
> subflows which contain all the fluff and keep a main flow clean. 
> 
> A technique I've used is to build a custom object with tables etc to
> hold the
> data and reference everything through that. Probably overkill for most
> situations, but has been necessary in the past. 
> 
> just my 2p's worth, 
> Cheers
> Mike
> 
> --- Workflow <nathanfox at swissinfo.org> wrote:
> 
> > It sounds to me like you would be just transfering the complexity of
> your
> > workflow from the workflow definition into the code of the business
> object.
> > You'll probably end up with a huge BO method (depending on the size
> of your
> > workflow) which is split up into a big CASE ENDCASE.  You'll pass a
> > parameter to the case with the following values 'INITIALIZE',
> BEFORETASK1,
> > AFTERTASK1, BEFORETASK2, AFTERTASK2, etc.  You're workflow will look
> nicer
> > in the wf builder, but won't be very transparent as to what is
> happening.
> > 
> > Have you thought of the implications :  workflow definitions have
> versions,
> > a started workflow proceeds until completed within the same workflow
> > version.  Workbench development objects (i.e.Business Objects) have
> their
> > own independent versioning system....more complexity.
> > 
> > What about a second WF using the same business object, you'd have to
> create
> > another method or extend the case to support multiple WF.
> > 
> > Sounds pretty sticky.  My gut feeling is don't do it.
> > 
> > OO starts with good design.
> > Whenever creating a variable, flag, container element, attribute,
> method
> > etc.. I always ask myself a few questions :
> > Does this attribute/method really belong here where I'm programming
> it? you
> > should normally ask this question before starting on the code?
> > 
> > Does this attribute/method actually belong to a different BO which is
> not
> > yet instantiated? If the container element is actually an attribute
> of
> > another BO, I prefer instantiating the BO and keeping it in the
> container,
> > chances are I'll need something else from the BO later on.
> > 
> > Think about visibility, who needs to see this attribute.  The method
> > locally, the method as import parameters, the task locally/as import
> > parameter, the workflow locally/ as import parameter, etc.
> > 
> > Don't pass unnecessary task container elements back to the workflow
> > container.
> > 
> > Decide whether the container element is import, export, or both
> before
> > setting both flags without thinking, "only provide what is mandatory,
> only
> > request what is needed".
> > 
> > Model always a function module before creating a method,  The
> function
> > module signature (import/export parameters and exceptions must be
> defined
> > before creating the BO Method.  Think about whether import parameters
> are
> > optional and have default values and set the corresponding
> attributes.
> > 
> > Maybe the experts would like to chime in and add some thoughts,
> > 
> > Nate
> > 
> > 
> > 
> > 
> > 
> > -----Ursprungliche Nachricht-----
> > Von: sap-wug-bounces at mit.edu [mailto:sap-wug-bounces at mit.edu]Im
> Auftrag
> > von Rick Sample
> > Gesendet: Mittwoch, 9. Februar 2005 14:56
> > An: SAP-WUG at MITVMA.MIT.EDU 
> > Betreff: Passing a new container or struct to / from WF template.
> > 
> > 
> > I want to make my WFs a tad more OO. i.e. I want to reduce the amount
> of
> > 
> > container operations from / to business objects and FM to / from WF
> > template.
> > 
> > Right now I have some WFs that I have a lot more containers elements
> > being
> > passed around than I care to have. The simplest additions are a PIA.
> > 
> > What I would like to do, if possible, is to pass a struct or
> container
> > to the CONTAINER
> > and inside the BO add, update, remove, etc. a struct / container and
> > pass ONE
> > container / struct back to the WF container.
> > 
> > Example:
> > WF Activity task to BO method. Create elements inside a struct or
> > another container
> > and pass back ONE struct or container to the WF CONTAINER.
> > 
> > I can create a new container inside a BO but I do not know what
> Object
> > type to pass back
> > to the WF CONTAINER. Or a structure?
> > 
> > Anything in the given WFs, demos, etc. to shed some light on this
> > quest?
> > 
> > Any help is appreciated.
> > 4.6C
> > 
> > Rick Sample
> > SAP Workflow / Developer
> 
=== message truncated ===



More information about the SAP-WUG mailing list