Notifying the Yankee (part 2) This time with the Clarify Client
Recently I posted about how to notify the yankee, meaning the person who a case was yanked from.
I showed how to make this happen within applications that use the Dovetail SDK (Dovetail Agent, Dovetail Mobile, etc.)
Now, lets see how we can accomplish the same task within the Clarify Classic Client.
Setup
Most of the setup is the same as I covered previously.
1. Turn the participant2user pseudo-relation into an exclusive relation
2. Setup a business rule recipient alias for the “Yanked From User”
3. Create a business rule that uses the “Yanked from User” as a recipient of a rule
4. Add the participant record
Add a Participant using ClearBasic
To add a participant record, we can add some ClearBasic code behind form 737, which is the Yank form.
Caution: this is an old-school C form, so much of the prescribed way of using CB code on this form doesn’t work. Especially around the Form_Save routines.
Here’s what I came up with:
OPTION EXPLICIT
Dim actEntryObjid As Long Function GetCurrentOwnerObjid() As Long Dim previousOwnerObjid As Long Dim lor As List Dim rec As Record Dim br As New BulkRetrieve Dim objectType As String Dim ownerRelation As String GetCurrentOwnerObjid = 0 Select Case YANK_OBJ_TYPE.Text Case "Case" objectType = "case" ownerRelation = "case_owner2user" Case "Subcase" objectType = "subcase" ownerRelation = "subc_owner2user" End Select If Len(objectType) > 0 Then br.SimpleQuery 0, objectType br.AppendFilter 0, "id_number", cbEqual, EDT_5.Text br.TraverseFromParent 1, ownerRelation, 0 br.RetrieveRecords Set lor = br.GetRecordList(1) If lor.Count > 0 Then Set rec = lor.ItemByIndex(0) previousOwnerObjid = rec.GetField("objid") End If End If GetCurrentOwnerObjid = previousOwnerObjid End Function Sub Form_Load() Me.DoDefault End Sub Sub Form_Save2(bs As BulkSave) Dim recActEntry As Record If bs.CountByType("act_entry") > 0 Then Set recActEntry = bs.GetRecordByIndex(0,"act_entry") actEntryObjid = recActEntry.GetField("objid") End If End Sub Sub SaveParticipant(previousOwnerObjid As Long) Dim recP As New Record Dim bs As New BulkSave If actEntryObjid > 0 And previousOwnerObjid > 0 Then recP.RecordType = "participant" recP.SetField "role_code", 1 bs.InsertRecord recP bs.RelateRecordsToID recP, "act_entry", actEntryObjid, "participant2act_entry" bs.RelateRecordsToID recP, "user", previousOwnerObjid, "participant2user" bs.Save End If End Sub Sub YANK_BTN_Click() Dim previousOwnerObjid As Long previousOwnerObjid = GetCurrentOwnerObjid() Me.DoDefault SaveParticipant previousOwnerObjid End Sub
Normally, I would add the participant record within Form_Save1 or Form_Save2, but this didn’t work. It exhibited some really strange behavior and threw some gawd-awful OST subsystem errors. So, I punted, and just added it after the default behavior happened on the Yank button.
Also notice that I only added support for cases and subcases. If you want to support other object types, add them to the Select Case portion of the GetCurrentOwnerObjid function.
Lets give it a whirl
From the Clarify Classic Client, Yank a case:
and then we should see an email notification come through:
and we should see the Yank activity and the Business Rule action in the case activity log:
Success!
You may now continue yanking away (does that sound slightly naughty?). And the person you yanked from will be notified appropriately.
Hope you find this useful.
And that wraps up my blog posting for 2011. See you in 2012.
Rock on.