Open topic with navigation

TIBCO Business Studio™ - BPM Edition 5.4.0

# Notifying a Process That a Case Object It Uses Has Been Modified

You can add a case data signal event handler to a process so that it can subscribe to a particular case object that the process uses. The process then is notified if that case object is modified, and can take appropriate action to respond to the change.

At runtime, the case data signal is:

- initialized when the case reference field is first assigned.
- re-initialized if the case reference field is changed to reference a different case object.
- uninitialized if the case reference field is set to null.

While the case data signal is initialized, the event is triggered whenever the referenced case object is either updated, linked to or unlinked from other case objects, or (in some circumstances) deleted.

Before you begin

The process must already contain a data field of type Case Class Reference that identifies the case object to which the case data signal event handler subscribes.

Procedure
1. Either:
   Add a catch signal intermediate event to the process (if you want to use a signal event handler).
   Add an event sub-process to the process, then add a signal start event to the sub-process (if you want to use a signal event sub-process).
2. On the General tab of the signal event's Properties view, click Case Data as the Signal Type, then enter the name of the process data field that contains the case reference for the required case object.
   Note: Selecting Case Data also sets the Serialize concurrent flows for this event handler option. Concurrent execution of the event handler flow is disabled. (This behavior would be undesirable if local copies of the referenced case object are being updated as a result of the event, which is likely.)
3. Add a script task that uses the bpm.caseSignal class and methods to determine how the referenced case object has been modified - whether it has been updated, linked to or unlinked from other case objects, or (in some circumstances) deleted.
4. Add appropriate business logic to the process to deal with the change to the case object.

## Example

The following process fragment is part of a business process that handles a customer enquiry.

The main Handle Customer Enquiry process flow works like this:

1. A customer support representative (CSR) dealing with the enquiry enters the customer's ID, which is then used in the Lookup Customer Details script task to retrieve a case object containing the customer's details:

       // Get the case reference to the CustDetails class that matches the identifier provided in the Customer ID (custID) field.
       data.custRef = bpm.caseData.findByCaseIdentifier(data.custId, 'com.example.caseclass.CustomerDetails');
       // Read the case reference to get the corresponding CustomerDetails case data object.
       data.custDetails = bpm.caseData.read(data.custRef);

2. The customer's details are displayed to the CSR in the Contact Customer task, which is offered to the CSR pool of workers.

To cater for the possibility that a customer's details could change in between the time that a Contact Customer work item is scheduled and a CSR opening and completing that work item, a case data signal event handler is implemented:

1. The Catch CustDetails Changed event subscribes to the `custRef` case reference. It is triggered whenever the referenced `CustDetails` case object changes.
2. The Refresh Customer Details script task interrogates the received event to find out if it was caused by an update. If it was, it re-reads the customer's details from the referenced case object and updates the local `CustDetails` data field.

       if
       (CaseSignalAttributes.isCaseUpdate())
       {
       data.custDetails = bpm.caseData.read(data.custRef);
       }
       else
       {
       // Optionally perform other activities to handle the event if the case object has been
       // linked to or unlinked from other case objects, or deleted
       }

3. The Update Contact Customer task throw signal event sends the updated `CustDetails` data field to its corresponding Catch Signal event, which is configured to update that data in the Contact Customer work item.

Note: You can use a signal event sub-process instead of a signal event handler, as shown below.

Subtopics

Did you find this helpful?

Yes No
Great!
Thanks for taking the time to give us some feedback.
Sorry about that

Why wasn't this helpful? (check all that apply)

Could not find what I was looking for
Instructions confusing or unclear
Instructions did not work

Want to tell us more?

Please select at least one option or provide details about the issue!!

Error occurred while submitting feedback.

Error2 occurred while submitting feedback.

TIBCO Business Studio™ - BPM Edition

Copyright © 2015-2023. Cloud Software Group, Inc. All Rights Reserved.