0 votes
1.0k views
by

1 Answer

0 votes
by (30.6k points)

Common design patterns in IBM BPM / BAW with a sketch of each implementation (several are detailed in other answers on this site):

  1. Facade service per system - one toolkit service flow per external operation ("CRM: get customer"), input / output as business objects, errors normalised; BPDs never call an integration directly. Implementation: toolkit "CRM Connector" with a Server definition, external service, wrapper flows.
  2. Claim check - references instead of payloads in the process (question 2572).
  3. Constructor / initializer - first activity builds the complete business object (defaults, lookups).
  4. Configuration by EPV - thresholds and switches as EPVs read through one helper (question 766).
  5. Delayed response / request-callback - asynchronous integration with a message event and a timer escalation (question 1025).
  6. Correlated message events - UCA + intermediate message event with a business key (question 2573).
  7. Timer escalation ladder - timer boundary events on a user task: reminder at 2 days, reassign to manager at 5, auto-decision at 10; each timer path returns to the task via a gateway.
  8. Exception queue - errors caught by boundary events create a "Handle exception" task for an operations team with Retry / Skip / Abort decisions (question 2554).
  9. Saga / compensation - after a failed step, run compensating services in reverse order (a script keeps a list of completed steps; an event sub-process runs the compensations).
  10. Multi-instance work - "for each line item" sub-process with a completion condition, instead of loops with counters.
  11. Four-eyes approval - second approver must differ from the first: team filter service excluding tw.local.firstApprover.
  12. Dashboard + Service Call - CSHS dashboards that read through service flows, never SQL in the coach.
  13. Audit trail service - one toolkit service writes who / what / when to a table or the instance's comments; called from key activities.
// four-eyes: team filter service (input team TWTeam, output TWTeam) used by the "Second approval" activity
var out = new tw.object.Team(); out.name = tw.local.team.name; out.members = new tw.object.listOf.String();
for (var i = 0; i < tw.local.team.members.listLength; i++) {
  if (tw.local.team.members[i] != tw.local.firstApprover) out.members.insertIntoList(out.members.listLength, tw.local.team.members[i]);
}
tw.local.filteredTeam = out;

References

Related questions

0 votes
1 answer 1.3k views
0 votes
1 answer 1.9k views
0 votes
1 answer 1.6k views
0 votes
2 answers 4.0k views
0 votes
1 answer 905 views
0 votes
1 answer 2.5k views
0 votes
1 answer 1.8k views
0 votes
1 answer 1.7k views
0 votes
1 answer 782 views

727 questions

807 answers

98 comments

5.0k users

Join BPM Community Discord Channel

Welcome to BPM Tips Q&A, Community wiki/forum where you can ask questions and receive answers from other IBM BPM experts and members of the community. Users with 2000 points will automatically be promoted to expert level.
Created by Dosvak LLC
Our Youtube Channel
...