77
Advanced Workflow Techniques Markus Kinateder Senior Developer, SAP AG

Advanced workflow techniques

Embed Size (px)

Citation preview

Page 1: Advanced workflow techniques

Advanced Workflow Techniques

Markus KinatederSenior Developer, SAP AG

Page 2: Advanced workflow techniques

IntroductionHandling DataExpressing Control FlowDealing With EventsDistributing WorkMonitoring Your ProcessesEverything Else

Page 3: Advanced workflow techniques

IntroductionHandling DataExpressing Control FlowDealing With EventsDistributing WorkMonitoring Your ProcessesEverything Else

Page 4: Advanced workflow techniques

© SAP AG 2006, SAP NetWeaver / 4

What This Lecture Is About

This lecture…

… describes new features in the SAP Business Workflow areaWeb Application Server release 6.20NetWeaver releases NW04 and NW04s

… is not an introduction to SAP Business WorkflowYou have to be familiar with SAP Business Workflow to fully profit from the next 60 minutes

… covers a lot of different independent topicsIt should give you an overview and a first impression of the new conceptsMore details can be found

in the slide notesin the appendixin the documentation

… is about technology, not about real-world scenarios

Page 5: Advanced workflow techniques

© SAP AG 2006, SAP NetWeaver / 5

Release Dependency

New workflow features introduced in this presentation are associated with the Web Application Server / NetWeaver release they are first available in

The release number is highlighted in the upper right corner of each slide

NW04s

NW04

Page 6: Advanced workflow techniques

IntroductionHandling DataExpressing Control FlowDealing With EventsDistributing WorkMonitoring Your ProcessesEverything Else

Page 7: Advanced workflow techniques

© SAP AG 2006, SAP NetWeaver / 7

Re-implementation of the Container 6.20

Complete reimplementation of container technology

No restrictions concerning data typesDDIC types with arbitrary lengthsBinary dataStructures with arbitrary depth and complexityABAP OO references

Container is by default stored as XML documentFacilitates diversity of supported data typesSaves storage space (especially for large containers/structures)

No database entry for each structure field required anymoreEntails serialisation / deserialisation effort

Old container persistence (SWCONT, SWCONTOB) still supportedCompatibility modeWorkflow Builder setting ( Appendix)

Page 8: Advanced workflow techniques

© SAP AG 2006, SAP NetWeaver / 8

Parameter Container Interface

The old container was represented as an internal tableManipulating the container meant using awkward container macros

The new container implementation is ABAP Objects based

A (released) API is provided for reading an manipulating container datathe ABAP Objects interface IF_SWF_IFS_PARAMETER_CONTAINER

This interface represents the container already in a number of workflow APIs (and will get more ubiquitous from release to release)

IF_SWF_IFS_PARAMETER_CONTAINER contains the following methods:

Method DescriptionCLEAR Resets an element to its type-based initial value

GET Delivers the value of an element

GET_TYPE Delivers the data type of an element

GET_VALUE_REF Delivers a reference to the value of an element

LIST_NAMES Delivers a list of names of all elements

SET Sets the value of an element

6.20

Page 9: Advanced workflow techniques

© SAP AG 2006, SAP NetWeaver / 9

Expressions

Expressions now provide index access to multi-line elements

&table[index]& Access to an entire table line&table[index].columnName& Access to a component of a table line

&table[].columnName& Projection to a single column&customers[1].orders[2]& Second order of first customer

Expressions can contain functional method calls to BOR or ABAP Objects The expression evaluates to the result value of the method It is possible to pass parametersMethods used in expressions must not have side effects

„Read only“ methodsNo database changes

Instance method w/o parameters &my_object.get_value( )&

Instance method w parameters &my_object.methodA( param1=&exp1&; param2=17 )&

Static method %my_class.static_method( param1=&exp2& )%

No more restrictions concerning data typesABAP-OO object referencesStringsNested structures

NW04

Page 10: Advanced workflow techniques

© SAP AG 2006, SAP NetWeaver / 10

New Binding Editor

target container

source container

import binding

export bindingbinding

instructions

drag & drop

drag & drop

drag & drop

6.20

Page 11: Advanced workflow techniques

© SAP AG 2006, SAP NetWeaver / 11

Binding Instructions

Source and Target of a binding instruction are expressionsAssigning a table line to a structure component is now possible (if compatible)

Several binding operators are availablefor expression to expression binding (as above)for container to container binding

The button lets you choose the right binding operator

source expression binding operator dataflow direction target expression

6.20

Assign valueAppend to tableInitializeExpression to expression

Merge (Copy all elements)Container to container

XSLT Transformation

Programmed Binding (Container-IF)Programmed Binding (SWCONT)

see Appendix for further cofiguration possibilities

Page 12: Advanced workflow techniques

IntroductionHandling DataExpressing Control FlowDealing With EventsDistributing WorkMonitoring Your ProcessesEverything Else

Page 13: Advanced workflow techniques

© SAP AG 2006, SAP NetWeaver / 13

Step Conditions 6.20

READY

CHECKED

SELECTED

STARTED

COMPLETED

CreateWork ItemConditionInstantiation

Execution

CompleteExecutionCondition

CompleteWork ItemCondition

see Appendix for further details

Page 14: Advanced workflow techniques

© SAP AG 2006, SAP NetWeaver / 14

SWITCH: The New Multiple Condition Flavor

1. Double-click on multiple condition icon

2. Select Multiple Condition Flavour

3. Enter Branches and Conditions

4. Name Default Branch

Each branch of the SWITCH carries a condition definition

The conditions are evaluated in the given order

The first branch whose condition evaluates to TRUEis taken

If none of the conditions evaluates to TRUE, a default branch is taken

Condition Editor

Condition 1 is TRUE

Condition 2 is TRUE

Default branch

NW04

Page 15: Advanced workflow techniques

© SAP AG 2006, SAP NetWeaver / 15

Blocks: Basic Features

Blocks…

are modeling elements

can contain other modeling elements

represent a data sub-contextall modeling elements within the block refer to this data context (binding, conditions, …)

have a data interface

have one start and one end node

are represented by block work items new work item type

can be deadline monitored (latest end only)

can catch exceptions ( see Appendix)

Start node

Block

End node

NW04

Page 16: Advanced workflow techniques

© SAP AG 2006, SAP NetWeaver / 16

Blocks: Work Item Hierarchy

Block items introduce new levels in work item hierarchies

Blocks can contain dependent work items

Blocks are represented as folders in the workflow log

Block structure is sustained at runtimeBlock is completed only if dependent work items are in a final stateIf a block is cancelled, all its dependent work items are cancelled, too

NW04

Page 17: Advanced workflow techniques

© SAP AG 2006, SAP NetWeaver / 17

Blocks: Data Context Properties

Every block has a containerNested blocks form nested data contexts

Parent relationships between containersWorkflow is the top level block

Parent context is visible within sub contextBindings can be defined from

the parent context to the sub context (Import binding at block instantiation)the sub context to the parent context (Export binding after block completion)

Blo

ck C

onta

iner

Wor

kflo

w C

onta

iner

Visi

bilit

y of

da

ta

Impo

rt

Bin

ding

Expo

rt

Bin

ding

Pare

nt

Con

tain

er

NW04

Page 18: Advanced workflow techniques

© SAP AG 2006, SAP NetWeaver / 18

Blocks: Dynamic Parallel Instantiation

Block instantiation can be dynamically controlled by multilinecontainer elements (ParForEach)

Similar to the „ParForEach“ dynamic parallel processing for activities!

For each entry in the multiline element, one block instance is createdCorresponding line data transported to the block context via binding

Process continues after the ParForEach block if eitherall instantiated parallel blocks are completed ora special join condition evaluates to TRUE after completion of a block

Block definition

+

Multilinecontainer element

object1object2

:objectN

= :N

2

1

N parallel block instances

NW04

Page 19: Advanced workflow techniques

© SAP AG 2006, SAP NetWeaver / 19

Blocks: Dynamic Sequential Execution

Block execution can be dynamically controlled by multilinecontainer elements (ForEach)For each entry in the multiline element, the sequence of steps defined within the block is executed once

Only one block item is created!ForEach loop semantics

Process continues after the ForEach block if eitherall table entries are processed ora special condition evaluates to TRUE after completion of a loopsequence

Block definition

+

Multilinecontainer element

object1object2

:objectN

=

N block sequence cycles

…1 2 N

NW04

Page 20: Advanced workflow techniques

© SAP AG 2006, SAP NetWeaver / 20

Local Workflows

Local workflows…are control flow snippets

not part of the main process sequence

are just special blocksrepresented by block work items

are started via local eventsdata binding event – local flow

have full access to process datacan be instantiated an arbitrary number of timesare cancelled if still active when main process completes

3. Local event is raised

2. Exception is caught by block

1.Exception is raised

4. Local workflow is started

NW04

Page 21: Advanced workflow techniques

IntroductionHandling DataExpressing Control FlowDealing With EventsDistributing WorkMonitoring Your ProcessesEverything Else

Page 22: Advanced workflow techniques

© SAP AG 2006, SAP NetWeaver / 22

Workflow Header Events (1)

1. Select „Basic Data“

2. Select „Version-Dependent“

3. Select „Events“4. Enter event data

5. Choose receiver type

Receiver Type Reaction of Workflow to EventCancel Workflow The workflow instance is set to status CANCELLEDCancel and Restart Workflow

The workflow instance is set to status CANCELLEDA new instance is started with the same data

Evaluate Pre- and Postconditions

Conditions „Create Work Item“ and „Complete Work Item“ are evaluated

Reevaluate Rules Agent determination of all active dialog work items is repeated

The workflow instance can listen to eventsEvent couplings only exist if the corresponding object exists in the workflow container The receiver type tells you how the workflow processes the event

6.20

Page 23: Advanced workflow techniques

© SAP AG 2006, SAP NetWeaver / 23

Workflow Header Events (2)

Receiver Type Reaction of Workflow to EventWait Step Event Event is delivered to existing appropriate wait step (event work item)

If no active event work item exists, the event is parkedsee one of the next slides for parked events and the extended wait step!

Trigger Local Event A specified local event is triggeredThis local event could

start local workflowscomplete wait steps (event items)

see one of the next slides for the extended wait step!

WAS 640 (NW04) offers you two new receiver types

NW04

Page 24: Advanced workflow techniques

© SAP AG 2006, SAP NetWeaver / 24

Parked Events (1)

event

Problem/Feature 1:

Workflow can only react on events ifappropriate wait step has already beeninstantiated

If event is raised „too early“, it is lost forthe processwait for

event

event

Problem/Feature 2:

Events always complete all correspondingactive wait step instances (event items)

token

NW04

Page 25: Advanced workflow techniques

© SAP AG 2006, SAP NetWeaver / 25

Parked Events (2)

event

parked eventsevent

parked eventsevent

consume parked event

The process instance can act as an intermediate event storage

If active receiver event items exists, the one created first receives the event

If no active receiver event item exists, the event is parked

The first matching event item created consumes the first event parked

In any case: One event is delivered to exactly one event item

See Appendix for further details

NW04

Page 26: Advanced workflow techniques

© SAP AG 2006, SAP NetWeaver / 26

workflow

Correlations (1)

Event couplings are created using

event name (design time information)

event object instance (run time information)

The object instance has to be known to theprocess

container

A

A

A

knownobject

Problem: How to wait for events of yet unknown objects?

Knowing an object means knowing its key ( unique identifier)

But: objects can also be identified using semantic information

Goal: Wait for events of objects semantically coupled to objects known

instantiate event item

NW04

Page 27: Advanced workflow techniques

© SAP AG 2006, SAP NetWeaver / 27

Correlations (2)

B

A

Correlations are objects which group other objects by semantic criteria (correlation key)

“objects having to do with each other”

correlationinstance

correlatedobject

instance

known object instance

Event couplings can also be created using

event name (design time information)

event object type (design time information)

correlation instance (run time information)

The object instance does not have to be known to the processbut at least one correlated object instance has toExample: know order to identify correlated invoice

NW04

Page 28: Advanced workflow techniques

© SAP AG 2006, SAP NetWeaver / 28

workflowCorrelations are instantiated using oneparticipating object instance

(semantic) correlation key has to be determined

Example: order ID

Wait step (event item) is instantiated using

correlation instance (semantic key)

object type

event

Example: wait for creation of invoice referring to known order

Correlations (3)

container

A knownobject

instantiate event item

Correlationinstance

A

instantiate correlation

B event

Event of unknown, yet correlated object is delivered to event item via the correlation instance

see Appendix for further details

NW04

Page 29: Advanced workflow techniques

© SAP AG 2006, SAP NetWeaver / 29

Wait for condition

SWWCOND

Wait for local eventWait for event using workflow

Wait for event

Wait Step: Four Different Flavours

Conventional wait step

Wait for global event

Correlations can be used

Condition specified in wait step

Evaluated by periodic background job SWWCOND

Wait for global event

received by workflow instance

dispatched to event item

Correlations can be used

eventevaluate condition

workflow instance

event

workflow instance

Local event

Wait for local event raised by trigger step within the same workflow instance

NW04

Page 30: Advanced workflow techniques

IntroductionHandling DataExpressing Control FlowDealing With EventsDistributing WorkMonitoring Your ProcessesEverything Else

Page 31: Advanced workflow techniques

© SAP AG 2006, SAP NetWeaver / 31

Boosting SBWP Performance

Means to improve SBWP performance have been provided

Scenarios that benefit most are

Many agents work on large pools of work items (e.g. call center scenario)

Large, slow work listsNecessity to often refresh the work list (due to work item „overlaps“)

Extensive usage of dynamic columnsparticularly with large work lists

Grouping of work items in large work lists using container dataGrouped according to contentGrouped according to content typeGrouped according to sort key

To mitigate SBWP performance issues, BAdIs have been defined

6.20

Page 32: Advanced workflow techniques

© SAP AG 2006, SAP NetWeaver / 32

SBWP-BAdI: Filtering Work Lists

BAdI WF_BWP_SELECT_FILTER enables the reduction of the number of work items displayed in the Business Workplace workflow inbox

It imports the entire work list (work item header information)It exports the (reduced) work list to be displayed as inbox

Custom filtering algorithms can be implementedExample implementation based on random numbers available

Performance critical operations applied to reduced work listDefault attributes, dynamic columns, work item text in differentlanguages, …

Availability: WAS 620 SP 44, WAS 640 SP 9 (see note 765783)

end user standard work list selection

entire work list

filtering

BAdI

work list subset

preparation for display

Business Workplace

WF_BWP_SELECT_FILTER

6.20

Page 33: Advanced workflow techniques

© SAP AG 2006, SAP NetWeaver / 33

SBWP-BAdI: Accelerating Dynamic Columns

Dynamic columns can be customized on task levelDisplay work item container information in Business Workplace inbox

Usage of dynamic columns is performance criticalRead container for every single work itemInstantiate objects and read object attributesContainer and Business Object Repository are not mass-enabled

BAdI WF_BWP_DYN_COLUMN can help to improve performanceThe BAdI implementation facilitates

custom bufferingmass selection from database

Availability: Future Support Packages for WAS 620 and WAS 640see note 848382 (not released yet)

work list to be

displayed

1st stage (determination

by BAdI)

WF_BWP_DYN_COLUMN

BAdI

dynamic columns partly

determined

subset with dynamic columns

2nd stage (standard

determination)

work list to be

displayed

6.20

Page 34: Advanced workflow techniques

© SAP AG 2006, SAP NetWeaver / 34

SBWP-BAdI: Evaluating Default Attributes

Default object attributes are displayed as object representatives

Determination of object attributes is time consumingNot mass-enabledVery critical for large numbers of work items

BAdI WF_BWP_OBJ_ATTRIBUTE can help to improve performanceAllows a custom, mass-enabled determination of default attributes

Availability: Future Support Packages for WAS 620 and WAS 640see note 848382 (not released yet)

_WI_OBJECT_ID _WI_GROUP_ID

_WI_OBJECT_ID

_WI_GROUP_ID

6.20

Page 35: Advanced workflow techniques

© SAP AG 2006, SAP NetWeaver / 35

Email Notifications

Replacement for SAP MAPI is providedClient-based MS Outlook integration of SAP Business WorkflowSupport ends 10/2005

New solutionsServer-based (zero footprint)Mail client independentCovers 90% of workflow-related MAPI customer scenarios

Different replacements for different SAP releases

Report RSWUWFML2Polling report sending email notificationsReleases 4.6C – 6.20

Extended NotificationsServer notification frameworkReleases > NW04

6.20

Page 36: Advanced workflow techniques

© SAP AG 2006, SAP NetWeaver / 36

Extended Notifications: Overview

SAP Business Workflow

send e-mails

Extended Notifications

process workitem

collect workitems

Email

End user

Email client

SAP GUI or Portal UWL

NW04

Page 37: Advanced workflow techniques

© SAP AG 2006, SAP NetWeaver / 37

Extended Notifications: Basic Features

Notify users about work items that need to be processed Send workitems to groupware (e.g. MS Outlook or Lotus Notes) carrying direct callbacks to backend transactions

Execution of web-based work items (Web Dynpro, People centric UI, …)Execution of work items via SAP GUI for Windows

NW04

Page 38: Advanced workflow techniques

IntroductionHandling DataExpressing Control FlowDealing With EventsDistributing WorkMonitoring Your ProcessesEverything Else

Page 39: Advanced workflow techniques

© SAP AG 2006, SAP NetWeaver / 39

BI Integration for SAP Business Workflow (1)

The Workflow Information System (WIS) has become obsolete with WAS release 6.10

Customers do their reporting using BI

Workflow projects with BI requirementscould not use standard workflow-related data extractionhad to implement their own extraction logic for workflow data

This gap has now been closedTechnical work item data is available in BI as infocubeHow many workflows of type ‘xy’ were executed?What is the average processing time for a given workflow (step)?How many steps of type ‘xy’ were executed by org unit ‘abc’?

Workflow and Business Objects worlds are linked by work item to object relation information available

6.20

Page 40: Advanced workflow techniques

© SAP AG 2006, SAP NetWeaver / 40

BW Integration for SAP Business Workflow (2) 6.20

Page 41: Advanced workflow techniques

© SAP AG 2006, SAP NetWeaver / 41

Work Item Programming Exits (1)

Work item exit classes have to implement the ABAP Objects interface IF_SWF_IFS_WORKITEM_EXIT

Exit classes can be attached toSteps (activity, decision, wait, web activity) corresponding work itemsBlocks block itemsWorkflows flow items

Exit classes are called at particular times in the work item lifecycle

work item exit implementation

BEFORE_CREATIONAFTER_CREATIONAFTER_RULE_EXECSTATE_CHANGEDBEFORE_EXECUTIONAFTER_ASYNC_INVOKEAFTER_EXECUTIONBEFORE_REMOVE

IF_S

WF_

IFS_

WO

RK

ITEM

_EXI

Twork item

6.20

Page 42: Advanced workflow techniques

© SAP AG 2006, SAP NetWeaver / 42

Work Item Programming Exits (2)

The workflow runtime provides the work item exit withthe name of the lifecycle eventa work item context object (reference to IF_WAPI_WORKITEM_CONTEXT)

The work item context provides methods toread work item data (header, task, agents, texts, …)get container handles (IF_SWF_IFS_PARAMETER_CONTAINER)

of the work item itselfof the super ordinate workflow

read properties ( see next slide)write messages to the workflow log

work item exitwork item event nameevent name

work

item

context

6.20

Page 43: Advanced workflow techniques

© SAP AG 2006, SAP NetWeaver / 43

Properties

Properties are custom labels for workflow definition entitiessteps (activities, decisions, wait steps, web activities)blocksworkflows

Properties can be used tocategorize stepsmark process states (milestones)

Properties are just name value pairsThey can be queried in work item exits ( custom process reporting)

„Is the current work item an approval work item?“„Is the current process still in negotiation phase?“

6.20

Page 44: Advanced workflow techniques

© SAP AG 2006, SAP NetWeaver / 44

Application Specific Workflow Reporting

Reporting tool

Application specific reporting database

Work item exit

Workflow definition

workflow completed

workflow started

activity

activity

activity2

1

Work item context

step with work item exit

step property

6.20

Page 45: Advanced workflow techniques

IntroductionHandling DataExpressing Control FlowDealing With EventsDistributing WorkMonitoring Your ProcessesEverything Else

Page 46: Advanced workflow techniques

© SAP AG 2006, SAP NetWeaver / 46

Testing Workflows: Start Options (1)

Workflow test transaction (SWUS) offers start options

Select „Goto“ „Options“

Option ExplanationStart Workflow Asynchronously The workflow instance is started via aRFCSimulate background processing

Background steps are executed synchronously, not via tRFCValuable for debugging background steps

Start Dialog Automatically Switch off synchronous dialog chains

Trace Level Switch on workflow trace and set trace levelDebug Mode Use aRFC instead of tRFC

Start options can be specified when testing workflows (SWUS)Options enable better error analysis

DebuggingTracing

NW04

Page 47: Advanced workflow techniques

© SAP AG 2006, SAP NetWeaver / 47

Testing Workflows: Start Options (2)

Extended start options with release 700

Option ExplanationRepeated Starts Instantiate and start workflow a specified number of timesPersistence Profile Specify container persistence profile for single step tasks (TS…)

The persistence profile for workflows (WS…) is specified in the workflow definition

NW04s

Page 48: Advanced workflow techniques

© SAP AG 2006, SAP NetWeaver / 48

Using ABAP Objects in Workflows (1)

SAP Business Workflow now supports two object repositoriesBOR (Business Object Repository)SE24 (ABAP Objects)

Persistent object keys now have three componentsObject category (CATID) ( BOR or ABAP Objects)Object type (TYPEID) ( BOR object type or ABAP Objects classname)Object key (INSTID)

Both repositories equally well supportedBut: No delegation feature in SE24

SE24 support covers the same aspects as BOR supportContainerExpressionsMethodsEvents

NW04

Page 49: Advanced workflow techniques

© SAP AG 2006, SAP NetWeaver / 49

Using ABAP Objects in Workflows (2)

Container can reference ABAP OO objectsobject category

classname

ABAP OO objects can be used in expressions

just as BOR objects are used

ABAP OO object methods can be used in standard task definitions

just as BOR object methods are used

object category

classname

method

NW04

Page 50: Advanced workflow techniques

© SAP AG 2006, SAP NetWeaver / 50

Q&A

Questions?

Page 51: Advanced workflow techniques

© SAP AG 2006, SAP NetWeaver / 51

Please complete your session evaluation.

Be courteous — deposit your trash, and do not take the handouts for the following session.

Feedback

Thank You !

Page 52: Advanced workflow techniques

© SAP AG 2006, SAP NetWeaver / 52

Appendix

Appendix

Page 53: Advanced workflow techniques

© SAP AG 2006, SAP NetWeaver / 53

Container: Workflow Persistence Profile

Each Workflow instance has a persistence profileIt is set in the basic data of the workflow definitionThe default value is

„XML Persistence“ for new workflow definitions„Compatibility Mode“ for legacy workflow definitions

1. Select „Basic Data“

2. Select „Version-Dependent“

3. Select „Control“

4. Select „Persistence Profile“

5. Set „Persistence Profile“

6.20

Page 54: Advanced workflow techniques

© SAP AG 2006, SAP NetWeaver / 54

Binding Instructions: Configuration

Every binding instruction can be configured

The available configuration options depend on the operator

Option Available for

Handle errors as warnings All binding operators

Move-corresponding Assign, Append

Overwrite empty target elements only Assign, Merge, XSLT

No action if source is initial Assign, XSLT

No action if source is empty Assign, XSLT

The set of binding operators is extensible

You can program your own binding operatorsUse IF_SWF_IFS_BIND_TRANSFORM for expression to expression operatorsUse IF_SWF_IFS_BIND_TRANSFORM_CONT for container to container operators

6.20

Page 55: Advanced workflow techniques

© SAP AG 2006, SAP NetWeaver / 55

Step Conditions: Condition Types

Condition Type Behavior

Create Work Item This condition is evaluated on the surrounding container Work item remains in WAITING state until condition evaluates to TRUE

It can not be executed until condition is fulfilledComplete Work Item This condition is evaluated on the surrounding container

Work item is immediately set to COMPLETED when condition evaluates to TRUEResult branch „Complete condition true“ is taken

Complete Execution This condition is evaluated on the step container itselfCondition is evaluated after work item executionIf the condition evaluates to TRUE, the work item is set to COMPLETED

If the condition evaluates to FALSE, the work item remains IN PROCESS or is even set back to READY ( see slide notes for details)

6.20

Page 56: Advanced workflow techniques

© SAP AG 2006, SAP NetWeaver / 56

Step Conditions: Definition

1. Double-clickon activity icon

2. Select Conditions Tab

3. Select Condition Type

4. Enter condition expression

Step conditions areformulated on the surrounding container (data context) or the step containerevaluated either by the workflow engine, a periodic background job (SWWCOND) or

event drivenavailable for the following step types (with work item representation)

ActivitiyUser DecisionWait StepWeb Activity

The state of the corresponding work item can be influenced bythe fact that a condition is definedthe result of condition evaluation

6.20

Page 57: Advanced workflow techniques

© SAP AG 2006, SAP NetWeaver / 57

Blocks: Exception Handling (1)

Blocks can handle exceptions (TRY-CATCH mechanism)Exceptions can be raised by a Process Control step ( workflow exceptions)For every workflow exception defined within the process, exception handlers can be defined on every blockA generic (CATCH ALL) exception handler is also available

Main block sequenceGeneric exception

handler (CATCH ALL)

Handler for exception exceptionA

Process control to raise workflow

exception

NW04

Page 58: Advanced workflow techniques

© SAP AG 2006, SAP NetWeaver / 58

Blocks: Exception Handling (2)

Exceptions are propagatedFrom their origin up the block hierarchy

Blocks either catch exceptions…in case appropriate handler is defined

… or propagate them furtherin case no appropriate handler definedorblock already caught exception

If exception is caughteverything inside block is cancelledexception handler is executedblock is completed normally afterwards

If exception is not caught, process is set to an ERROR state

1. Exception is raised

3. Caught by outer block

2. Propagated by inner block

4. Contents of outer block cancelled

5. Exception handler executed

6. Outer block completed

NW04

Page 59: Advanced workflow techniques

© SAP AG 2006, SAP NetWeaver / 59

Parked Events: Concept (1)

When a wait step is instantiated,an event work item is created acting as event listeneran event instance coupling (subscription) is written for this event work item

Every event triggered completes all active event work items subscribed to itThe process (workflow instance) plays no role here

workflow instance

1

2

3

event

workflow instance

1

2

3

both event items completed

event received directly by event

items

NW04

Page 60: Advanced workflow techniques

© SAP AG 2006, SAP NetWeaver / 60

Parked Events: Concept (2)

The workflow instance can act as an event dispatcherThe workflow instance acts as the event receiverIt dispatches those events to its dependent event items

Event work items receive events via the workflowOnly one event work item is completed per event

If more than one event work items in question exist, the oldest is takenThis mechanism implements an event item queue within the process

workflow instance

1

2

3

event

workflow instance

1

2

3

only one event item completed

event received by workflow instance

event dispatched to event item

NW04

Page 61: Advanced workflow techniques

© SAP AG 2006, SAP NetWeaver / 61

workflow instance

Parked Events: Concept (3)

If no active event items exist when workflow receives event, theevent is parked

Event waits for the next corresponding event item to be created within the processThis mechanism implements a queue of parked events

New event items consume corresponding parked events immediately after their creation

event 1

workflow instance

event 1

workflow instance

event 2event 1

workflow instance

event 1

event 2

workflow instance

event 1

event 2

1

workflow instance

event 2 1

no active event item

event is parked

event item is created

parked event is consumed

NW04

Page 62: Advanced workflow techniques

© SAP AG 2006, SAP NetWeaver / 62

Correlations: Principles (1)

Conventional event couplings:Wait steps are instantiated for existing and known object instancesThe object key is used to connect event and wait step (coupling)

Requirement:Wait for events of unknown objects

Object key is not available at wait step creation time

Object key cannot be used to link event to wait step

Solution:Use semantic coupling between object instances (correlation)

One object instance leads to several correlated object instances

Define wait step not by object key but by object type + correlation instance

NW04

Page 63: Advanced workflow techniques

© SAP AG 2006, SAP NetWeaver / 63

Correlations: Principles (2)

Correlation instances group object instances by semantic criteriaThe objects are pulled together by a specially defined correlation key

Those object instances fulfill the correlation instanceThey can have different object types

A correlation instance can not be created until at least one fulfilling object instance exists

A correlation does not make sense without its objects!

Object type AA1

Object type B

B1

B2

B3B4

A2

A3

correlation instance

object instances

object does not fulfill correlation

object fulfills correlation

NW04

Page 64: Advanced workflow techniques

© SAP AG 2006, SAP NetWeaver / 64

Correlations: Definition

Every correlation instance is based on a correlation definitionThe correlation definition consists of

A set of key fields (key definition)A set of object types that shall be correlated with each other (correlation components)A set of assignment rules between object type data and correlation key fields (one for each correlation component)

For every correlation component, those assignment rules have to fully specify the correlation key!

Object type B

Object type AattributeA1attributeA2attributeA3attributeA4

attributeB1attributeB2attributeB3

key structurecorrelation

componentsassignment rules

correlation definition

NW04

Page 65: Advanced workflow techniques

© SAP AG 2006, SAP NetWeaver / 65

Correlations: Run Time

apply binding rule and

compare keys

B3 B3

B3

correlation fulfilled

correlation not fulfilled

Correlations are activated with the help of an object instanceObject type has to belong to the correlation components

object instance active correlation instance

apply assignment rulesA1

correlation definition

+

Work items listening to events can use correlations

wait step definitionactive correlation

instance

+ instantiate wait step

event item with correlation

Object type B

object type

+event 1

event name

+

If the event is raised by any correlation component, the correlation is checked

B3 event 1object instance

raises event

NW04

Page 66: Advanced workflow techniques

© SAP AG 2006, SAP NetWeaver / 66

Extended Notifications: History

Report RSWUWFMLPolling reportUses SMTP/SAPconnect mail connectionUses SAP Office‘s auto-forward addressAvailability: Release 3.1I

E-Mail Notifications for Business WorkflowReport RSWUWFML2Successor of RSWUWFMLWinGui shortcuts instead of R3F attachmentsAvailability: Release 4.6C

Extended Notifications for SAP Business WorkflowServer notification frameworkAvailability: NW04

NW04

Page 67: Advanced workflow techniques

© SAP AG 2006, SAP NetWeaver / 67

Notification Concepts: Release Dependencies

NW04s

NW04

6.20

6.10

4.6

<4.6SAP MAPI RSWUWFML

RSWUWFML2

ExtendedNotifications

NW04

Page 68: Advanced workflow techniques

© SAP AG 2006, SAP NetWeaver / 68

Extended Notifications: Individual Notifications

Individual mails possible on a work item by work item basis

Or….

NW04

Page 69: Advanced workflow techniques

© SAP AG 2006, SAP NetWeaver / 69

Extended Notifications: Aggregation

Index of work items

Generic Decision

WorkitemDescription

Shortcut Attachmentspossible

Shortcut links

NW04

Page 70: Advanced workflow techniques

© SAP AG 2006, SAP NetWeaver / 70

Extended Notifications: Redefinition of Text

Redefinable Text

NW04

Page 71: Advanced workflow techniques

© SAP AG 2006, SAP NetWeaver / 71

Workflow

Extended Notifications: Notification Framework

User 1 User 2

Application Object(Workitem)

Application Object(Workitem)

Application Object(Workitem)

User 1

User 2

User 2

Application Notification Framework

NW04

Page 72: Advanced workflow techniques

© SAP AG 2006, SAP NetWeaver / 72

Extended Notifications: Feature Comparison

Feature SAP MAPI RSWUWFML RSWUWML2 Extended Notifications

Deliver workitems to any e-mail client - X X X

SAP Shortcut attachments - - X X

Prefix AND suffix text (surrounding workitem description) - - X X

Enhanced address determination - - X X

Enhanced substitution handling - - X X

HTML e-mail (Outlook only) - - - X

Generic decisions - - - X

Links to new Web UIs (WebDynpro, etc) - - - X

Lists of workitems in one e-mail - - - X

Support workitem forwarding via e-mail - - - X

NW04

Page 73: Advanced workflow techniques

© SAP AG 2006, SAP NetWeaver / 73

How To Use ABAP OO Objects in Workflow (1)

ABAP OO classes are built with the class builder (SE24)ABAP OO classes used in workflows have to implement the interface IF_WORKFLOWIF_WORKFLOW includes two interfaces

BI_PERSISTENT (methods for object persistence)BI_OBJECT (methods for object runtime)

Methods needed for persistence handling

Standard methods used by runtime

Application specific methods

NW04

Page 74: Advanced workflow techniques

© SAP AG 2006, SAP NetWeaver / 74

How To Use ABAP OO Objects in Workflow (2)

The methods of BI_PERSISTENT implement persistence handling

Method ExplanationFIND_BY_LPOR Factory method

Converts a persistent object reference (POR) to a ABAP OO objectinstance

LPOR Returns the persistent object reference (POR) of the ABAP OO object instance

REFRESH Tells the object to reload its state from the database (synchronization)

Option ExplanationDEFAULT_ATTRIBUTE_VALUE Returns the value of the default attribute used for displaying the

object instanceEXECUTE_DEFAULT_METHOD Tells the object instance to call its default method

Normally, this is a method which displays the object

RELEASE Tells the object instance that it is no longer neededPossibility for controlled cleanup

The methods of BI_OBJECT are needed by the workflow runtime

NW04

Page 75: Advanced workflow techniques

© SAP AG 2006, SAP NetWeaver / 75

How To Use ABAP OO Objects in Workflow (3)

All public attributes of an ABAP OO class can be accessed directly within workflow

Method parameters can be of any datatypeParameters of BOR object types had to be character basedXML Persistence profile has to be used for container

NW04

Page 76: Advanced workflow techniques

© SAP AG 2006, SAP NetWeaver / 76

How To Use ABAP OO Objects in Workflow (4)

All public events defined for the ABAP OO class can be used likeBOR object events

as start eventsas completion eventsas workflow header eventsin wait stepsin event trigger steps

NW04

Page 77: Advanced workflow techniques

© SAP AG 2006, SAP NetWeaver / 77

Further Information

Public Web:www.sap.comNetWeaver Developer‘s Guide: www.sdn.sap.com/sdn/developersguide.sdnSAP Customer Services Network: www.sap.com/services/

Related SAP Education Training Opportunitieshttp://www.sap.com/education/