Workflow library methods

Which IIQ version are you inquiring about?

Version 8.4

Please share any images or screenshots, if relevant.

image_2024-01-23_191648283.png

Share all details related to your problem, including any error messages you may have received.

Hi All,

I am trying to understand workflows better, could someone advise where to find these methods (their actual logic) mentioned in the screenshot or those listed below to understand their logic?

  1. buildApprovalSet()
  2. buildCommonApprovals()
  3. buildManagerApprovals()
  4. buildOwnerApproval()
1 Like

Hi @sreeram ,

You will be able to find more information in the Javadoc. This information is available in IdentityLibrary class. You will be able to find other methods used in workflow specifically in sailpoint.workflow package.

1 Like

@sreeram - As Jarin mentioned, you can refer the java doc, alternatively you can also find the business process guide here which talks about all these library methods

1 Like

There are two of them that I can’t find. Maybe one of the other Ambassador types knows.

They are:

  1. getUserEmail(name, plan)
  2. getEmail(name)

They’re both used in the OOTB LCM “Identity Request Notify” workflow, but I can’t find them in any of the workflow libraries. Any idea? Just magic?

1 Like

Hi all,

Thanks for the response.

@drosenbauer I was able to find the logic for getUserEmail(), and getEmail() from the rule library “Workflow Library” in Object Browser.

@officialamitguptaa @Jarin_James is it possible to find the actual code for the said methods?

At least buildApprovalSet(), I wrote a rule library for approvals, I wanted to compare and see if anything’s off in my rule library

@sreeram - Unfortunately there is no ethical way of getting the code :wink: . However, are you trying to create some approval Assignment rule?

1 Like

Haha thanks @officialamitguptaa , appreciate the help.

@officialamitguptaa yes, I am trying to use the approval assignment rule, I wanted to assign the approval to approvers dynamically. Any pointers for me?

Let’s consider the below scenario - For App A the requirement is Manager only whereas for App B it is both Manager + App Owner.

Below is the rule snippet -

import sailpoint.object.*;
import sailpoint.object.Link;
import sailpoint.object.Bundle;
import sailpoint.object.Identity;
import sailpoint.object.ManagedAttribute;
import sailpoint.object.Workflow.Approval;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;

System.out.println("************* ENTERING THE SampleRule **************");
List approvals = new ArrayList();

try {
Identity id = context.getObjectByName(Identity.class, identityName);
System.out.println("********** SampleRule CALLING | identity *********::" + id);

Identity manager=id.getManager();
System.out.println("********** SampleRule CALLING | manager *********::" + manager);

Approval mgr = new Approval();
String description = "Approval - Account Changes for User: " + identityName;
System.out.println("********** SampleRule CALLING | Description *********::" + description);


for (ApprovalItem item : approvalSet.getItems())
{
System.out.println("**********approvalSet item object *********::" + item.toXml());
String itemAppName = item.getApplicationName();
System.out.println("********** itemAppName *********::" +itemAppName);

String itemName = item.getName();
System.out.println("********** SampleRule CALLING | itemName ==> "+ itemName );

Object itemValueObj = item.getValue();
System.out.println("********** SampleRule CALLING | itemValueObj ==> "+ itemValueObj );

Application app = context.getObjectByName(Application.class, itemAppName);
Identity identity =app.getOwner();
String appOwner = identity.getName();
System.out.println("********** identity Appowner ==> "+ identity);
System.out.println("********** identity appOwner New ==> "+ appOwner);

if (null != itemAppName && itemAppName.equalsIgnoreCase("PAM")) {
System.out.println("********** INSIDE PAM CALL | App Owner Approval *********::" );

mgr.setWorkItemDescription(description);
mgr.setDescription(description);
mgr.setOwner(appOwner);
mgr.setMode("serial");
mgr.setApprovalSet(approvalSet);
approvals.add(approval);
System.out.println("********** Added Owner as 2nd level *********::");

}

}
}
catch (Exception e)
{
System.out.println("exception in setting approval"+e.printStackTrace());

}
return approvals;

This might help.

2 Likes

This topic was automatically closed 60 days after the last reply. New replies are no longer allowed.