Wednesday, February 11, 2015

Oracle BPM : Assign or Remove user from Application role using BPM api's

Below is the java code to assign or remove user from a role , same functionality is present in bpm workspace admin.


package com.raylabs.bpm;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import oracle.bpel.services.bpm.common.IBPMContext;
import oracle.bpel.services.workflow.client.IWorkflowServiceClientConstants;
import oracle.bpel.services.workflow.client.WorkflowServiceClientFactory;
import oracle.bpm.client.BPMServiceClientFactory;
import oracle.bpm.services.client.IBPMServiceClient;
import oracle.bpm.services.organization.IBPMOrganizationService;
import oracle.bpm.services.organization.model.AppRoleRefType;
import oracle.bpm.services.organization.model.ApplicationContext;
import oracle.bpm.services.organization.model.ApplicationContextTypeEnum;
import oracle.bpm.services.organization.model.ApplicationRoleType;
import oracle.bpm.services.organization.model.ApplicationRoles;
import oracle.bpm.services.organization.model.Organization;
import oracle.bpm.services.organization.model.Participant;
import oracle.bpm.services.organization.model.ParticipantTypeEnum;
public class Class1 {
private static String username;
private static String password;
private static String environment;
private static String serverPort;
private static String user;
private static String role;
private Class1() {
super();
}
public static void main(String[] args) {
username = "xx";
password = "xxxx";
environment = "dev";
serverPort = "34444";
user = "xxxx";
role = "APPROVER";
BPMServiceClientFactory wfSvcClient = null;
IBPMContext bpmCtx = null;
IBPMServiceClient bPMServiceClient = null;
try {
final Map connectionProperty = getConnProp();
wfSvcClient =
BPMServiceClientFactory.getInstance(connectionProperty,
null, null);
bPMServiceClient = wfSvcClient.getBPMServiceClient();
IBPMOrganizationService bpmOrgSvc =
bPMServiceClient.getBPMOrganizationService();
bpmCtx =
(IBPMContext)wfSvcClient.getWorkflowServiceClient().getTaskQueryService().authenticate(null,
null,
null);
Organization org = bpmOrgSvc.exportOrganization(bpmCtx);
ApplicationRoles applicationRoles = org.getApplicationRoles();
List<ApplicationRoleType> roleList =
applicationRoles.getApplicationRole();
Iterator<ApplicationRoleType> iterator = roleList.iterator();
while (iterator.hasNext()) {
ApplicationRoleType applicationRoleType = iterator.next();
if (applicationRoleType.getName().equals(role)) {
ApplicationContext appContext = new ApplicationContext();
appContext.setApplicationType(ApplicationContextTypeEnum.ORACLE_BPM_PROCESS_ROLES_APP);
AppRoleRefType appRole = new AppRoleRefType();
appRole.setType(ParticipantTypeEnum.USER);
appRole.setName(user);
bpmOrgSvc.grantAppRoleToPrincipal(bpmCtx, appContext, role,
new Participant(appRole));
System.out.println("Added user " + user + " to Role " +
role);
// bpmOrgSvc.revokeAppRoleFromPrincipal(bpmCtx, appContext, role, new Participant(appRole));
// System.out.println("Removed user "+user+" from Role "+role);
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
}
}
public static Map getConnProp() throws Exception {
final Map connProp = new HashMap();
try {
connProp.put(IWorkflowServiceClientConstants.CONNECTION_PROPERTY.EJB_INITIAL_CONTEXT_FACTORY,
"weblogic.jndi.WLInitialContextFactory");
connProp.put(IWorkflowServiceClientConstants.CONNECTION_PROPERTY.EJB_PROVIDER_URL,
"t3://" + environment +
"-abc.com:" + serverPort);
connProp.put(IWorkflowServiceClientConstants.CONNECTION_PROPERTY.EJB_SECURITY_PRINCIPAL,
username);
connProp.put(IWorkflowServiceClientConstants.CONNECTION_PROPERTY.EJB_SECURITY_CREDENTIALS,
password);
connProp.put(IWorkflowServiceClientConstants.CONNECTION_PROPERTY.CLIENT_TYPE,
WorkflowServiceClientFactory.REMOTE_CLIENT);
} catch (Exception e) {
e.printStackTrace();
}
return connProp;
}
}


Libraries

No comments:

Post a Comment