1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.syncope.fit.core.reference.flowable;
20
21 import org.apache.commons.lang3.tuple.Pair;
22 import org.apache.syncope.common.lib.request.MembershipUR;
23 import org.apache.syncope.common.lib.request.UserUR;
24 import org.apache.syncope.core.flowable.impl.FlowableRuntimeUtils;
25 import org.apache.syncope.core.flowable.task.FlowableServiceTask;
26 import org.apache.syncope.core.persistence.api.dao.UserDAO;
27 import org.apache.syncope.core.persistence.api.entity.user.User;
28 import org.apache.syncope.core.provisioning.api.PropagationByResource;
29 import org.apache.syncope.core.provisioning.api.data.UserDataBinder;
30 import org.flowable.engine.delegate.DelegateExecution;
31
32 public class AssignDirectorGroup extends FlowableServiceTask {
33 private final UserDataBinder dataBinder;
34 private final UserDAO userDAO;
35
36 public AssignDirectorGroup(final UserDataBinder dataBinder, final UserDAO userDAO) {
37 this.dataBinder = dataBinder;
38 this.userDAO = userDAO;
39 }
40
41 @Override
42 protected void doExecute(final DelegateExecution execution) {
43 User user = execution.getVariable(FlowableRuntimeUtils.USER, User.class);
44
45 Boolean secondLevelApprove = execution.
46 getVariable("secondLevelApprove", Boolean.class);
47 if (Boolean.TRUE.equals(secondLevelApprove)) {
48 user = userDAO.save(user);
49
50 UserUR userUR = new UserUR();
51 userUR.setKey(user.getKey());
52 userUR.getMemberships().add(new MembershipUR.Builder("ebf97068-aa4b-4a85-9f01-680e8c4cf227").build());
53
54 Pair<PropagationByResource<String>, PropagationByResource<Pair<String, String>>> propInfo =
55 dataBinder.update(user, userUR);
56
57
58 execution.setVariable(FlowableRuntimeUtils.USER, user);
59 execution.setVariable(FlowableRuntimeUtils.PROP_BY_RESOURCE, propInfo.getLeft());
60 execution.setVariable(FlowableRuntimeUtils.PROP_BY_LINKEDACCOUNT, propInfo.getRight());
61 } else {
62 LOG.info("Second level was not approved, not assigning the director group to " + user.getUsername());
63 }
64 }
65 }