The tcProvisioningOperationsIntf inteface API being used to retrieve the Rejected and Pending Task, Retrying the Rejected Tasks, and Rejected Task Completed Manually in the Oracle Identity Manager repository.
Client Code Setup
2. Retry the Rejected Tasks
3. Manually Completed the Rejected Tasks.
4. Manually Completed the Pending Tasks.
Tasks Needs to be Performed:
OIMClient client= new OIMClient();
client.login(username,password.toCharArray());
tcProvisioningOperationsIntf provisioningServiceIntf = client.getService(tcProvisioningOperationsIntf.class);
// Resource Name. My Example Resource Name is AD User
String resourceName = "AD User";
// Failed Task Name. My Example Failed Task Name is Create User.
String taskName = "Create User" ;
String taskStatus = "Rejected"
Map<String, String> filter= new HashMap<String,String>();
filter.put("Objects.Name", resourceName);
filter.put("Process Definition.Tasks.Task Name",taskName);
// Failed Task Status. In my example failed task status is Rejected. If you need pending task, replace Rejected with Pending
String taskStaus[]= new String[]{"Rejected"};
tcResultSet trs=provisioningServiceIntf.findAllOpenProvisioningTasks(filter,taskStaus);
List<Map<String,Object>> taskLists= new ArrayList<Map<String,Object>>();
int rowCount=trs.getRowCount();
if(rowCount >0){
for(int i=0;i<rowCount ;i++)
{
trs.goToRow(0);
Map<String,Object> map= new HashMap<String,Object>();
map.put("Process Instance.Task Details.Key",trs.getLongValue("Process Instance.Task Details.Key"))
map.put("Process Instance.Task Information.Target User",trs.getStringValue("Process Instance.Task Information.Target User"));
map.put("Process Instance.Key",trs.getLongValue("Process Instance.Key"));
map.put("Process Definition.Tasks.Key",trs.getLongValue("Process Definition.Tasks.Key"));
map.put("Process Definition.Tasks.Task Name",trs.getStringValue("Process Definition.Tasks.Task Name"));
taskLists.add(map);
}
}
{
long taskKey = (long) map.get("Process Instance.Task Details.Key");
try
{
provisioningServiceIntf.retryTask(taskKey );
} catch (tcAPIException e)
{
System.out.println(" - tcAPIException - Error" + e);
} catch (tcTaskNotFoundException e)
{
System.out.println(" - tcTaskNotFoundException - Error" + e);
}
}
for(Map<String,Object> task : taskLists )
{
long taskKey = (long) map.get("Process Instance.Task Details.Key");
try
{
provisioningServiceIntf.setTasksCompletedManually(new long[]{taskKey} );
} catch (tcAPIException e)
{
System.out.println(" - tcAPIException - Error" + e);
} catch (tcTaskNotFoundException e)
{
System.out.println(" - tcTaskNotFoundException - Error" + e);
}
catch (tcBulkException e)
{
System.out.println(" - tcBulkException - Error" + e);
}
}
{
long taskInstanceKey = (long) map.get("Process Instance.Key");
try
{
tcResultSet trs= provisioningServiceIntf.getProcessDetail(taskInstanceKey );
int count=trs.getRowCount();
for(int i=0;i<count;i++)
{
trs.goToRow(i);
String taskName=trs.getStringValue("Process Definition.Tasks.Task Name");
boolean retryAllowed= trs.getBooleanValue("RETRYALLOWED");
long processTask=trs.getLongValue("Process Definition.Tasks.Key");
System.out.println( "taskName - "+taskName + " - retryAllowed - "+retryAllowed+ " - processTask - "+processTask);
}
catch (tcAPIException e)
{
System.out.println(e);
}
catch (tcNotAtomicProcessException e)
{
System.out.println(e);
} catch (tcColumnNotFoundException e)
{
System.out.println(e);
}
}
Pre-Requisite:
Initial Setup.
Please follow the link and setup the OIM client environment to use to create the OIM Objects.Client Code Setup
tcProvisioningOperationsIntf API Usage:
1. Retrieving the Rejected and Pending tasks based on the Filter Criteria,2. Retry the Rejected Tasks
3. Manually Completed the Rejected Tasks.
4. Manually Completed the Pending Tasks.
Tasks Needs to be Performed:
1. Create the OIMClient Handle
OIMClient client= new OIMClient();
client.login(username,password.toCharArray());
2. Get tcProvisioningOperationsIntf service object
tcProvisioningOperationsIntf provisioningServiceIntf = client.getService(tcProvisioningOperationsIntf.class);
3. Retrieve the Rejected or Pending Tasks Based on The Resource Object and Task Name
// Resource Name. My Example Resource Name is AD User
String resourceName = "AD User";
// Failed Task Name. My Example Failed Task Name is Create User.
String taskName = "Create User" ;
String taskStatus = "Rejected"
Map<String, String> filter= new HashMap<String,String>();
filter.put("Objects.Name", resourceName);
filter.put("Process Definition.Tasks.Task Name",taskName);
// Failed Task Status. In my example failed task status is Rejected. If you need pending task, replace Rejected with Pending
String taskStaus[]= new String[]{"Rejected"};
tcResultSet trs=provisioningServiceIntf.findAllOpenProvisioningTasks(filter,taskStaus);
List<Map<String,Object>> taskLists= new ArrayList<Map<String,Object>>();
int rowCount=trs.getRowCount();
if(rowCount >0){
for(int i=0;i<rowCount ;i++)
{
trs.goToRow(0);
Map<String,Object> map= new HashMap<String,Object>();
map.put("Process Instance.Task Details.Key",trs.getLongValue("Process Instance.Task Details.Key"))
map.put("Process Instance.Task Information.Target User",trs.getStringValue("Process Instance.Task Information.Target User"));
map.put("Process Instance.Key",trs.getLongValue("Process Instance.Key"));
map.put("Process Definition.Tasks.Key",trs.getLongValue("Process Definition.Tasks.Key"));
map.put("Process Definition.Tasks.Task Name",trs.getStringValue("Process Definition.Tasks.Task Name"));
taskLists.add(map);
}
}
4. Retry the Rejected Tasks
for(Map<String,Object> task : taskLists ){
long taskKey = (long) map.get("Process Instance.Task Details.Key");
try
{
provisioningServiceIntf.retryTask(taskKey );
} catch (tcAPIException e)
{
System.out.println(" - tcAPIException - Error" + e);
} catch (tcTaskNotFoundException e)
{
System.out.println(" - tcTaskNotFoundException - Error" + e);
}
}
5. Rejected or Pending Task Completed Manually
for(Map<String,Object> task : taskLists )
{
long taskKey = (long) map.get("Process Instance.Task Details.Key");
try
{
provisioningServiceIntf.setTasksCompletedManually(new long[]{taskKey} );
} catch (tcAPIException e)
{
System.out.println(" - tcAPIException - Error" + e);
} catch (tcTaskNotFoundException e)
{
System.out.println(" - tcTaskNotFoundException - Error" + e);
}
catch (tcBulkException e)
{
System.out.println(" - tcBulkException - Error" + e);
}
}
6. Retrieving the Rejected Task History
for(Map<String,Object> task : taskLists ){
long taskInstanceKey = (long) map.get("Process Instance.Key");
try
{
tcResultSet trs= provisioningServiceIntf.getProcessDetail(taskInstanceKey );
int count=trs.getRowCount();
for(int i=0;i<count;i++)
{
trs.goToRow(i);
String taskName=trs.getStringValue("Process Definition.Tasks.Task Name");
boolean retryAllowed= trs.getBooleanValue("RETRYALLOWED");
long processTask=trs.getLongValue("Process Definition.Tasks.Key");
System.out.println( "taskName - "+taskName + " - retryAllowed - "+retryAllowed+ " - processTask - "+processTask);
}
catch (tcAPIException e)
{
System.out.println(e);
}
catch (tcNotAtomicProcessException e)
{
System.out.println(e);
} catch (tcColumnNotFoundException e)
{
System.out.println(e);
}
}