Search in sources :

Example 1 with Group

use of org.kie.kogito.taskassigning.core.model.Group in project kogito-apps by kiegroup.

the class TaskAssigningGenerator method createUserList.

private List<User> createUserList(int size, List<Group> groupList) {
    List<User> userList = new ArrayList<>(size);
    userNameGenerator.predictMaximumSizeAndReset(size);
    for (int i = 0; i < size; i++) {
        String userName = userNameGenerator.generateNextValue();
        User user = new User(userName);
        user.setEnabled(true);
        int groupListSize = USER_GROUP_SET_SIZE_MINIMUM + random.nextInt(USER_GROUP_SET_MAXIMUM - USER_GROUP_SET_SIZE_MINIMUM);
        if (groupListSize > groupList.size()) {
            groupListSize = groupList.size();
        }
        Set<Group> groupSet = new LinkedHashSet<>(groupListSize);
        int groupListIndex = random.nextInt(groupList.size());
        for (int j = 0; j < groupListSize; j++) {
            groupSet.add(groupList.get(groupListIndex));
            groupListIndex = (groupListIndex + 1) % groupList.size();
        }
        user.setGroups(groupSet);
        LOGGER.trace("Created user with id: ({}).", userName);
        userList.add(user);
    }
    return userList;
}
Also used : LinkedHashSet(java.util.LinkedHashSet) Group(org.kie.kogito.taskassigning.core.model.Group) User(org.kie.kogito.taskassigning.core.model.User) ArrayList(java.util.ArrayList)

Example 2 with Group

use of org.kie.kogito.taskassigning.core.model.Group in project kogito-apps by kiegroup.

the class TaskAssigningGenerator method createTaskAssigningSolution.

private TaskAssigningSolution createTaskAssigningSolution(String fileName, int taskListSize, int groupListSize, int userListSize) {
    List<Group> groupList = createGroupList(groupListSize);
    List<User> userList = createUserList(userListSize, groupList);
    List<TaskAssignment> taskAssignmentList = createTaskAssignmentList(taskListSize, userList, groupList);
    TaskAssigningSolution solution = new TaskAssigningSolution("0", userList, taskAssignmentList);
    BigInteger totalFacts = AbstractSolutionImporter.factorial(taskListSize + userListSize - 1);
    BigInteger fixedFacts = AbstractSolutionImporter.factorial(userListSize - 1);
    BigInteger possibleSolutionSize = (totalFacts == null || fixedFacts == null) ? null : totalFacts.divide(fixedFacts);
    LOGGER.info("TaskAssigningSolution {} has {} tasks, {} groups, and {} users with a search space of {}.", fileName, taskListSize, groupListSize, userListSize, AbstractSolutionImporter.getFlooredPossibleSolutionSize(possibleSolutionSize));
    return solution;
}
Also used : Group(org.kie.kogito.taskassigning.core.model.Group) User(org.kie.kogito.taskassigning.core.model.User) TaskAssigningSolution(org.kie.kogito.taskassigning.core.model.TaskAssigningSolution) BigInteger(java.math.BigInteger) TaskAssignment(org.kie.kogito.taskassigning.core.model.TaskAssignment)

Example 3 with Group

use of org.kie.kogito.taskassigning.core.model.Group in project kogito-apps by kiegroup.

the class TaskAssigningGenerator method createGroupList.

private List<Group> createGroupList(int size) {
    List<Group> groupList = new ArrayList<>(size);
    groupNameGenerator.predictMaximumSizeAndReset(size);
    for (int i = 0; i < size; i++) {
        String groupName = groupNameGenerator.generateNextValue();
        Group group = new Group(groupName);
        LOGGER.trace("Created Group with id: ({}).", groupName);
        groupList.add(group);
    }
    return groupList;
}
Also used : Group(org.kie.kogito.taskassigning.core.model.Group) ArrayList(java.util.ArrayList)

Example 4 with Group

use of org.kie.kogito.taskassigning.core.model.Group in project kogito-apps by kiegroup.

the class TaskHelperTest method isPotentialOwnerInDirectAssignmentTrue.

@Test
void isPotentialOwnerInDirectAssignmentTrue() {
    for (User user : availableUsers) {
        task.getPotentialUsers().remove(user.getId());
        for (Group group : availableGroups) {
            user.getGroups().add(group);
            assertThat(isPotentialOwner(task, user)).isTrue();
            user.getGroups().remove(group);
        }
    }
}
Also used : Group(org.kie.kogito.taskassigning.core.model.Group) User(org.kie.kogito.taskassigning.core.model.User) Test(org.junit.jupiter.api.Test) ParameterizedTest(org.junit.jupiter.params.ParameterizedTest)

Example 5 with Group

use of org.kie.kogito.taskassigning.core.model.Group in project kogito-apps by kiegroup.

the class UserPropertyChangeProblemFactChangeTest method setUp.

@BeforeEach
void setUp() {
    newAttributes = new HashMap<>();
    newAttributes.put("attribute1", "value1");
    newGroups = new HashSet<>();
    newGroups.add(new Group("test-group"));
    newEnabled = false;
    user = new User(USER_ID);
    change = new UserPropertyChangeProblemFactChange(user, newEnabled, newAttributes, newGroups);
}
Also used : Group(org.kie.kogito.taskassigning.core.model.Group) User(org.kie.kogito.taskassigning.core.model.User) TestUtil.mockUser(org.kie.kogito.taskassigning.core.model.TestUtil.mockUser) BeforeEach(org.junit.jupiter.api.BeforeEach)

Aggregations

Group (org.kie.kogito.taskassigning.core.model.Group)10 User (org.kie.kogito.taskassigning.core.model.User)9 Test (org.junit.jupiter.api.Test)5 HashMap (java.util.HashMap)4 ArrayList (java.util.ArrayList)2 BeforeEach (org.junit.jupiter.api.BeforeEach)2 ParameterizedTest (org.junit.jupiter.params.ParameterizedTest)2 TaskAssigningSolution (org.kie.kogito.taskassigning.core.model.TaskAssigningSolution)2 TaskAssignment (org.kie.kogito.taskassigning.core.model.TaskAssignment)2 BigInteger (java.math.BigInteger)1 ZonedDateTime (java.time.ZonedDateTime)1 Arrays (java.util.Arrays)1 Collections (java.util.Collections)1 HashSet (java.util.HashSet)1 LinkedHashSet (java.util.LinkedHashSet)1 List (java.util.List)1 Map (java.util.Map)1 Set (java.util.Set)1 Collectors (java.util.stream.Collectors)1 AssertionsForInterfaceTypes.assertThat (org.assertj.core.api.AssertionsForInterfaceTypes.assertThat)1