protected static List<OrganizationalEntity> getOrganizationalEntityListFromParams( Map<String, String[]> params, boolean required, String operation) { List<OrganizationalEntity> orgEntList = new ArrayList<OrganizationalEntity>(); String[] users = getStringListParam("user", false, params, operation); String[] groups = getStringListParam("group", false, params, operation); if (required && (users.length == 0) && (groups.length == 0)) { throw KieRemoteRestOperationException.badRequest( "At least 1 query parameter (either 'user' or 'group') is required for the '" + operation + "' operation."); } for (String user : users) { User newuser = TaskModelProvider.getFactory().newUser(); ((InternalOrganizationalEntity) newuser).setId(user); orgEntList.add(newuser); } for (String group : groups) { Group newuser = TaskModelProvider.getFactory().newGroup(); ((InternalOrganizationalEntity) newuser).setId(group); orgEntList.add(newuser); } return orgEntList; }
public Void execute(Context cntxt) { TaskContext context = (TaskContext) cntxt; Group group = TaskModelProvider.getFactory().newGroup(); ((InternalOrganizationalEntity) group).setId(groupId); context.getTaskIdentityService().addGroup(group); return null; }
public Iterator<OrganizationalEntity> getMembersForGroup(Group group) { InitialLdapContext ctx = null; List<OrganizationalEntity> memebers = new ArrayList<OrganizationalEntity>(); try { ctx = buildInitialLdapContext(); String roleContext = this.config.getProperty(ROLE_CTX); String roleFilter = this.config.getProperty(ROLE_MEMBERS_FILTER, this.config.getProperty(ROLE_FILTER)); String roleAttrId = this.config.getProperty(MEMBER_ATTR_ID, "member"); String entityId = group.getId(); if (Boolean.parseBoolean(this.config.getProperty(IS_ENTITY_ID_DN, "false"))) { entityId = extractUserId(entityId, group); } roleFilter = roleFilter.replaceAll("\\{0\\}", entityId); SearchControls constraints = new SearchControls(); String searchScope = this.config.getProperty(SEARCH_SCOPE); if (searchScope != null) { constraints.setSearchScope(parseSearchScope(searchScope)); } NamingEnumeration<SearchResult> result = ctx.search(roleContext, roleFilter, constraints); while (result.hasMore()) { SearchResult sr = result.next(); Attribute member = sr.getAttributes().get(roleAttrId); for (int i = 0; i < member.size(); i++) { User user = TaskModelProvider.getFactory().newUser(); ((InternalOrganizationalEntity) user).setId(member.get(i).toString()); memebers.add(user); } } result.close(); } catch (Exception e) { e.printStackTrace(); } finally { if (ctx != null) { try { ctx.close(); } catch (NamingException e) { e.printStackTrace(); } } } return memebers.iterator(); }
@Test public void testSessionPerProcessInstance() throws Exception { RuntimeEnvironment environment = RuntimeEnvironmentBuilder.Factory.get() .newDefaultBuilder() .entityManagerFactory(emf) .userGroupCallback(userGroupCallback) .addAsset( ResourceFactory.newClassPathResource( "org/jbpm/test/functional/timer/IntermediateCatchEventTimerCycleWithHT.bpmn2"), ResourceType.BPMN2) .schedulerService(globalScheduler) .get(); long startTimeStamp = System.currentTimeMillis(); long maxEndTime = startTimeStamp + maxWaitTime; manager = RuntimeManagerFactory.Factory.get().newPerProcessInstanceRuntimeManager(environment); // prepare task service with users and groups RuntimeEngine engine = manager.getRuntimeEngine(EmptyContext.get()); TaskService taskService = engine.getTaskService(); Group grouphr = TaskModelProvider.getFactory().newGroup(); ((InternalOrganizationalEntity) grouphr).setId("HR"); User mary = TaskModelProvider.getFactory().newUser(); ((InternalOrganizationalEntity) mary).setId("mary"); User john = TaskModelProvider.getFactory().newUser(); ((InternalOrganizationalEntity) john).setId("john"); ((InternalTaskService) taskService).addGroup(grouphr); ((InternalTaskService) taskService).addUser(mary); ((InternalTaskService) taskService).addUser(john); manager.disposeRuntimeEngine(engine); completedStart = 0; for (int i = 0; i < nbThreadsProcess; i++) { new StartProcessPerProcessInstanceRunnable(manager, i).run(); } completedTask = 0; for (int i = 0; i < nbThreadsTask; i++) { new Thread(new CompleteTaskPerProcessInstanceRunnable(manager, i)).start(); } while (completedStart < nbThreadsProcess || completedTask < nbThreadsTask) { Thread.sleep(100); if (System.currentTimeMillis() > maxEndTime) { fail("Failure, did not finish in time most likely hanging"); } } // make sure all process instance were completed engine = manager.getRuntimeEngine(EmptyContext.get()); AuditService logService = engine.getAuditService(); // active List<? extends ProcessInstanceLog> logs = logService.findActiveProcessInstances("IntermediateCatchEvent"); assertNotNull(logs); for (ProcessInstanceLog log : logs) { logger.debug("Left over {}", log.getProcessInstanceId()); } assertEquals(0, logs.size()); // completed logs = logService.findProcessInstances("IntermediateCatchEvent"); assertNotNull(logs); assertEquals(nbThreadsProcess, logs.size()); manager.disposeRuntimeEngine(engine); logger.debug("Done"); }