Modified: syncope/trunk/core/src/main/resources/userWorkflow.bpmn20.xml URL: http://svn.apache.org/viewvc/syncope/trunk/core/src/main/resources/userWorkflow.bpmn20.xml?rev=1626150&r1=1626149&r2=1626150&view=diff ============================================================================== --- syncope/trunk/core/src/main/resources/userWorkflow.bpmn20.xml (original) +++ syncope/trunk/core/src/main/resources/userWorkflow.bpmn20.xml Fri Sep 19 08:58:36 2014 @@ -31,6 +31,7 @@ under the License. <startEvent id="theStart"/> <sequenceFlow id="flow1" sourceRef="theStart" targetRef="create"/> <serviceTask id="create" name="Create" activiti:expression="#{create.execute(execution.processInstanceId)}"/> + <sequenceFlow id="sid-EA94A12A-727F-414B-9D7E-AC576B0D6FA8" sourceRef="create" targetRef="active"/> <userTask id="active" name="Active"/> <sequenceFlow id="flow8" sourceRef="active" targetRef="activeGw"/> <exclusiveGateway id="activeGw"/> @@ -42,8 +43,15 @@ under the License. </sequenceFlow> <sequenceFlow id="active2Delete" sourceRef="activeGw" targetRef="delete"> <conditionExpression xsi:type="tFormalExpression"><![CDATA[${task == 'delete'}]]></conditionExpression> + </sequenceFlow> + <sequenceFlow id="active2RequestPasswordReset" sourceRef="activeGw" targetRef="generateToken4PasswordReset"> + <conditionExpression xsi:type="tFormalExpression"><![CDATA[${task == 'requestPasswordReset'}]]></conditionExpression> + </sequenceFlow> + <sequenceFlow id="active2ConfirmPasswordReset" sourceRef="activeGw" targetRef="checkToken4ConfirmPasswordReset"> + <conditionExpression xsi:type="tFormalExpression"><![CDATA[${task == 'confirmPasswordReset'}]]></conditionExpression> </sequenceFlow> <serviceTask id="update" name="Update" activiti:expression="#{update.execute(execution.processInstanceId)}"/> + <sequenceFlow id="sid-EA22026A-25F0-4ED0-AB6E-9CE9CE74623C" sourceRef="update" targetRef="active"/> <serviceTask id="suspend" name="Suspend" activiti:expression="#{suspend.execute(execution.processInstanceId)}"/> <sequenceFlow id="flow10" sourceRef="suspend" targetRef="suspended"/> <userTask id="suspended" name="Suspended"/> @@ -57,11 +65,20 @@ under the License. </sequenceFlow> <serviceTask id="reactivate" name="Reactivate" activiti:expression="#{reactivate.execute(execution.processInstanceId)}"/> <sequenceFlow id="flow12" sourceRef="reactivate" targetRef="active"/> + + <serviceTask id="generateToken4PasswordReset" name="Generate Token" activiti:expression="#{generateToken.execute(execution.processInstanceId)}"/> + <sequenceFlow id="sid-7F78CE07-A7A1-467F-BB4B-40FB234AEFF7" sourceRef="generateToken4PasswordReset" targetRef="notify4RequestPasswordReset"/> + <serviceTask id="notify4RequestPasswordReset" name="Notification" activiti:expression="#{notify.execute(execution.processInstanceId)}"/> + <sequenceFlow id="sid-CF9ACA40-7750-47C3-A508-7250D24D4F1F" sourceRef="notify4RequestPasswordReset" targetRef="active"/> + + <serviceTask id="checkToken4ConfirmPasswordReset" name="Check token, remove and update password" activiti:expression="#{passwordReset.execute(execution.processInstanceId)}"/> + <sequenceFlow id="sid-3E9FE01D-CC60-4A95-B356-CA0DC000FAD6" sourceRef="checkToken4ConfirmPasswordReset" targetRef="notify4ConfirmPasswordReset"/> + <serviceTask id="notify4ConfirmPasswordReset" name="Notification" activiti:expression="#{notify.execute(execution.processInstanceId)}"/> + <sequenceFlow id="sid-A37806A7-6B7B-48A2-BB37-DAE640231144" sourceRef="notify4ConfirmPasswordReset" targetRef="active"/> + <serviceTask id="delete" name="Delete" activiti:expression="#{delete.execute(execution.processInstanceId)}"/> <sequenceFlow id="flow99" sourceRef="delete" targetRef="theEnd"/> - <endEvent id="theEnd"/> - <sequenceFlow id="sid-EA94A12A-727F-414B-9D7E-AC576B0D6FA8" sourceRef="create" targetRef="active"/> - <sequenceFlow id="sid-EA22026A-25F0-4ED0-AB6E-9CE9CE74623C" sourceRef="update" targetRef="active"/> + <endEvent id="theEnd"/> </process> <bpmndi:BPMNDiagram id="BPMNDiagram_userWorkflow"> @@ -79,16 +96,16 @@ under the License. <omgdc:Bounds height="40.0" width="40.0" x="1400.0" y="520.0"/> </bpmndi:BPMNShape> <bpmndi:BPMNShape bpmnElement="update" id="BPMNShape_update"> - <omgdc:Bounds height="60.0" width="100.0" x="1370.0" y="740.7407688427132"/> + <omgdc:Bounds height="60.0" width="100.0" x="1370.0" y="615.0"/> </bpmndi:BPMNShape> <bpmndi:BPMNShape bpmnElement="suspend" id="BPMNShape_suspend"> - <omgdc:Bounds height="60.0" width="100.0" x="1490.0" y="280.0"/> + <omgdc:Bounds height="60.0" width="100.0" x="1490.0" y="370.0"/> </bpmndi:BPMNShape> <bpmndi:BPMNShape bpmnElement="suspended" id="BPMNShape_suspended"> - <omgdc:Bounds height="60.0" width="100.0" x="1640.0" y="300.0"/> + <omgdc:Bounds height="60.0" width="100.0" x="1640.0" y="370.0"/> </bpmndi:BPMNShape> <bpmndi:BPMNShape bpmnElement="suspendedGw" id="BPMNShape_suspendedGw"> - <omgdc:Bounds height="40.0" width="40.0" x="1820.0" y="360.0"/> + <omgdc:Bounds height="40.0" width="40.0" x="1820.0" y="380.0"/> </bpmndi:BPMNShape> <bpmndi:BPMNShape bpmnElement="reactivate" id="BPMNShape_reactivate"> <omgdc:Bounds height="60.0" width="100.0" x="1940.0" y="290.0"/> @@ -99,71 +116,106 @@ under the License. <bpmndi:BPMNShape bpmnElement="theEnd" id="BPMNShape_theEnd"> <omgdc:Bounds height="28.0" width="28.0" x="2080.0" y="451.0"/> </bpmndi:BPMNShape> - <bpmndi:BPMNEdge bpmnElement="sid-EA94A12A-727F-414B-9D7E-AC576B0D6FA8" id="BPMNEdge_sid-EA94A12A-727F-414B-9D7E-AC576B0D6FA8"> - <omgdi:waypoint x="920.0" y="540.2380952380952"/> - <omgdi:waypoint x="1030.0" y="540.7619047619048"/> - </bpmndi:BPMNEdge> + <bpmndi:BPMNShape bpmnElement="generateToken4PasswordReset" id="BPMNShape_generateToken4PasswordReset"> + <omgdc:Bounds height="81.0" width="121.0" x="1515.0" y="604.5"/> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape bpmnElement="notify4RequestPasswordReset" id="BPMNShape_notify4RequestPasswordReset"> + <omgdc:Bounds height="81.0" width="121.0" x="1515.0" y="750.0"/> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape bpmnElement="checkToken4ConfirmPasswordReset" id="BPMNShape_checkToken4ConfirmPasswordReset"> + <omgdc:Bounds height="81.0" width="121.0" x="1725.0" y="664.5"/> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape bpmnElement="notify4ConfirmPasswordReset" id="BPMNShape_notify4ConfirmPasswordReset"> + <omgdc:Bounds height="81.0" width="121.0" x="1725.0" y="810.0"/> + </bpmndi:BPMNShape> <bpmndi:BPMNEdge bpmnElement="flow12" id="BPMNEdge_flow12"> - <omgdi:waypoint x="1940.0" y="312.6007228007171"/> - <omgdi:waypoint x="1470.3246893147616" y="243.09556645232908"/> - <omgdi:waypoint x="1198.7197373159865" y="359.6936452281102"/> - <omgdi:waypoint x="1099.6440556314785" y="511.0"/> + <omgdi:waypoint x="1990.0" y="290.0"/> + <omgdi:waypoint x="1990.0" y="261.0"/> + <omgdi:waypoint x="1080.0" y="261.0"/> + <omgdi:waypoint x="1080.0" y="511.0"/> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge bpmnElement="flow11" id="BPMNEdge_flow11"> - <omgdi:waypoint x="1740.0" y="330.0"/> - <omgdi:waypoint x="1752.0" y="330.0"/> - <omgdi:waypoint x="1752.0" y="380.0"/> - <omgdi:waypoint x="1820.0" y="380.0"/> + <omgdi:waypoint x="1740.0" y="400.0"/> + <omgdi:waypoint x="1820.0" y="400.0"/> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge bpmnElement="flow10" id="BPMNEdge_flow10"> - <omgdi:waypoint x="1590.0" y="310.0"/> - <omgdi:waypoint x="1602.0" y="310.0"/> - <omgdi:waypoint x="1602.0" y="330.0"/> - <omgdi:waypoint x="1640.0" y="330.0"/> + <omgdi:waypoint x="1590.0" y="400.0"/> + <omgdi:waypoint x="1640.0" y="400.0"/> </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge bpmnElement="active2Update" id="BPMNEdge_active2Update"> - <omgdi:waypoint x="1420.4586490458448" y="559.5413509541552"/> - <omgdi:waypoint x="1420.0651491917588" y="740.7407688427132"/> + <bpmndi:BPMNEdge bpmnElement="active2RequestPasswordReset" id="BPMNEdge_active2RequestPasswordReset"> + <omgdi:waypoint x="1439.5" y="540.5"/> + <omgdi:waypoint x="1575.5" y="540.5"/> + <omgdi:waypoint x="1575.5" y="604.5"/> </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge bpmnElement="sid-EA22026A-25F0-4ED0-AB6E-9CE9CE74623C" id="BPMNEdge_sid-EA22026A-25F0-4ED0-AB6E-9CE9CE74623C"> - <omgdi:waypoint x="1370.0" y="770.7407688427132"/> - <omgdi:waypoint x="1080.0" y="770.7407688427132"/> + <bpmndi:BPMNEdge bpmnElement="active2Suspend" id="BPMNEdge_active2Suspend"> + <omgdi:waypoint x="1440.0" y="540.0"/> + <omgdi:waypoint x="1540.0" y="540.0"/> + <omgdi:waypoint x="1540.0" y="430.0"/> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge bpmnElement="suspended2Delete" id="BPMNEdge_suspended2Delete"> + <omgdi:waypoint x="1860.0" y="400.0"/> + <omgdi:waypoint x="1990.0" y="400.0"/> + <omgdi:waypoint x="1990.0" y="438.0"/> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge bpmnElement="sid-A37806A7-6B7B-48A2-BB37-DAE640231144" id="BPMNEdge_sid-A37806A7-6B7B-48A2-BB37-DAE640231144"> + <omgdi:waypoint x="1725.0" y="850.5"/> + <omgdi:waypoint x="1080.0" y="850.5"/> <omgdi:waypoint x="1080.0" y="571.0"/> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge bpmnElement="active2Delete" id="BPMNEdge_active2Delete"> - <omgdi:waypoint x="1439.5" y="540.5"/> - <omgdi:waypoint x="1990.0" y="540.5"/> + <omgdi:waypoint x="1440.0" y="540.0"/> + <omgdi:waypoint x="1990.0" y="540.0"/> <omgdi:waypoint x="1990.0" y="498.0"/> </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge bpmnElement="sid-3E9FE01D-CC60-4A95-B356-CA0DC000FAD6" id="BPMNEdge_sid-3E9FE01D-CC60-4A95-B356-CA0DC000FAD6"> + <omgdi:waypoint x="1785.5" y="745.5"/> + <omgdi:waypoint x="1785.5" y="810.0"/> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge bpmnElement="sid-7F78CE07-A7A1-467F-BB4B-40FB234AEFF7" id="BPMNEdge_sid-7F78CE07-A7A1-467F-BB4B-40FB234AEFF7"> + <omgdi:waypoint x="1575.5" y="685.5"/> + <omgdi:waypoint x="1575.5" y="750.0"/> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge bpmnElement="sid-EA94A12A-727F-414B-9D7E-AC576B0D6FA8" id="BPMNEdge_sid-EA94A12A-727F-414B-9D7E-AC576B0D6FA8"> + <omgdi:waypoint x="920.0" y="540.2380952380952"/> + <omgdi:waypoint x="1030.0" y="540.7619047619048"/> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge bpmnElement="sid-EA22026A-25F0-4ED0-AB6E-9CE9CE74623C" id="BPMNEdge_sid-EA22026A-25F0-4ED0-AB6E-9CE9CE74623C"> + <omgdi:waypoint x="1370.0" y="645.0"/> + <omgdi:waypoint x="1080.0" y="645.0"/> + <omgdi:waypoint x="1080.0" y="571.0"/> + </bpmndi:BPMNEdge> <bpmndi:BPMNEdge bpmnElement="flow1" id="BPMNEdge_flow1"> <omgdi:waypoint x="770.0" y="540.0"/> <omgdi:waypoint x="820.0" y="540.0"/> </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge bpmnElement="suspended2Delete" id="BPMNEdge_suspended2Delete"> - <omgdi:waypoint x="1860.0" y="380.0"/> - <omgdi:waypoint x="1902.0" y="380.0"/> - <omgdi:waypoint x="1980.0" y="388.0"/> - <omgdi:waypoint x="1986.25" y="438.0"/> + <bpmndi:BPMNEdge bpmnElement="sid-CF9ACA40-7750-47C3-A508-7250D24D4F1F" id="BPMNEdge_sid-CF9ACA40-7750-47C3-A508-7250D24D4F1F"> + <omgdi:waypoint x="1515.0" y="790.5"/> + <omgdi:waypoint x="1080.0" y="790.5"/> + <omgdi:waypoint x="1080.0" y="571.0"/> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge bpmnElement="suspended2Reactivate" id="BPMNEdge_suspended2Reactivate"> - <omgdi:waypoint x="1860.0" y="380.0"/> - <omgdi:waypoint x="1902.0" y="380.0"/> + <omgdi:waypoint x="1860.0" y="400.0"/> + <omgdi:waypoint x="1902.0" y="400.0"/> <omgdi:waypoint x="1902.0" y="320.0"/> <omgdi:waypoint x="1940.0" y="320.0"/> </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge bpmnElement="active2Suspend" id="BPMNEdge_active2Suspend"> + <bpmndi:BPMNEdge bpmnElement="active2ConfirmPasswordReset" id="BPMNEdge_active2ConfirmPasswordReset"> <omgdi:waypoint x="1439.5" y="540.5"/> - <omgdi:waypoint x="1540.0" y="540.5"/> - <omgdi:waypoint x="1540.0" y="340.0"/> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge bpmnElement="flow99" id="BPMNEdge_flow99"> - <omgdi:waypoint x="2040.0" y="466.5576923076923"/> - <omgdi:waypoint x="2080.005821071606" y="465.40367823831906"/> + <omgdi:waypoint x="1785.5" y="540.5"/> + <omgdi:waypoint x="1785.5" y="664.5"/> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge bpmnElement="flow8" id="BPMNEdge_flow8"> <omgdi:waypoint x="1130.0" y="540.8529411764706"/> <omgdi:waypoint x="1400.058651026393" y="540.0586510263929"/> </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge bpmnElement="active2Update" id="BPMNEdge_active2Update"> + <omgdi:waypoint x="1420.0" y="560.0"/> + <omgdi:waypoint x="1420.0" y="615.0"/> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge bpmnElement="flow99" id="BPMNEdge_flow99"> + <omgdi:waypoint x="2040.0" y="466.5576923076923"/> + <omgdi:waypoint x="2080.005821071606" y="465.40367823831906"/> + </bpmndi:BPMNEdge> </bpmndi:BPMNPlane> </bpmndi:BPMNDiagram> </definitions> \ No newline at end of file
Modified: syncope/trunk/core/src/test/java/org/apache/syncope/core/connid/PasswordGeneratorTest.java URL: http://svn.apache.org/viewvc/syncope/trunk/core/src/test/java/org/apache/syncope/core/connid/PasswordGeneratorTest.java?rev=1626150&r1=1626149&r2=1626150&view=diff ============================================================================== --- syncope/trunk/core/src/test/java/org/apache/syncope/core/connid/PasswordGeneratorTest.java (original) +++ syncope/trunk/core/src/test/java/org/apache/syncope/core/connid/PasswordGeneratorTest.java Fri Sep 19 08:58:36 2014 @@ -55,7 +55,7 @@ public class PasswordGeneratorTest exten } assertNotNull(password); - user.setPassword(password, CipherAlgorithm.AES, 0); + user.setPassword(password, CipherAlgorithm.AES); SyncopeUser actual = userDAO.save(user); assertNotNull(actual); @@ -73,7 +73,7 @@ public class PasswordGeneratorTest exten fail(ex.getMessage()); } assertNotNull(password); - user.setPassword(password, CipherAlgorithm.SHA, 0); + user.setPassword(password, CipherAlgorithm.SHA); userDAO.save(user); } Modified: syncope/trunk/core/src/test/java/org/apache/syncope/core/persistence/dao/EntitlementTest.java URL: http://svn.apache.org/viewvc/syncope/trunk/core/src/test/java/org/apache/syncope/core/persistence/dao/EntitlementTest.java?rev=1626150&r1=1626149&r2=1626150&view=diff ============================================================================== --- syncope/trunk/core/src/test/java/org/apache/syncope/core/persistence/dao/EntitlementTest.java (original) +++ syncope/trunk/core/src/test/java/org/apache/syncope/core/persistence/dao/EntitlementTest.java Fri Sep 19 08:58:36 2014 @@ -41,7 +41,7 @@ public class EntitlementTest extends Abs @Test public void findAll() { List<Entitlement> list = entitlementDAO.findAll(); - assertEquals("did not get expected number of entitlements ", 84, list.size()); + assertEquals("did not get expected number of entitlements ", 89, list.size()); } @Test Modified: syncope/trunk/core/src/test/java/org/apache/syncope/core/persistence/dao/NotificationTest.java URL: http://svn.apache.org/viewvc/syncope/trunk/core/src/test/java/org/apache/syncope/core/persistence/dao/NotificationTest.java?rev=1626150&r1=1626149&r2=1626150&view=diff ============================================================================== --- syncope/trunk/core/src/test/java/org/apache/syncope/core/persistence/dao/NotificationTest.java (original) +++ syncope/trunk/core/src/test/java/org/apache/syncope/core/persistence/dao/NotificationTest.java Fri Sep 19 08:58:36 2014 @@ -37,7 +37,7 @@ public class NotificationTest extends Ab @Test public void find() { - Notification notification = notificationDAO.find(1L); + Notification notification = notificationDAO.find(10L); assertNotNull(notification); assertNotNull(notification.getEvents()); assertFalse(notification.getEvents().isEmpty()); @@ -77,8 +77,8 @@ public class NotificationTest extends Ab @Test public void delete() { - notificationDAO.delete(1L); - assertNull(notificationDAO.find(1L)); + notificationDAO.delete(10L); + assertNull(notificationDAO.find(10L)); } @Test Modified: syncope/trunk/core/src/test/java/org/apache/syncope/core/persistence/dao/UserTest.java URL: http://svn.apache.org/viewvc/syncope/trunk/core/src/test/java/org/apache/syncope/core/persistence/dao/UserTest.java?rev=1626150&r1=1626149&r2=1626150&view=diff ============================================================================== --- syncope/trunk/core/src/test/java/org/apache/syncope/core/persistence/dao/UserTest.java (original) +++ syncope/trunk/core/src/test/java/org/apache/syncope/core/persistence/dao/UserTest.java Fri Sep 19 08:58:36 2014 @@ -138,7 +138,7 @@ public class UserTest extends AbstractDA user.setUsername("username"); user.setCreationDate(new Date()); - user.setPassword("pass", CipherAlgorithm.SHA256, 0); + user.setPassword("pass", CipherAlgorithm.SHA256); Throwable t = null; try { @@ -148,7 +148,7 @@ public class UserTest extends AbstractDA } assertNotNull(t); - user.setPassword("password", CipherAlgorithm.SHA256, 1); + user.setPassword("password", CipherAlgorithm.SHA256); user.setUsername("username!"); @@ -183,7 +183,7 @@ public class UserTest extends AbstractDA user.setUsername("username"); user.setCreationDate(new Date()); - user.setPassword("password", CipherAlgorithm.AES, 0); + user.setPassword("password", CipherAlgorithm.AES); SyncopeUser actual = userDAO.save(user); assertNotNull(actual); @@ -193,7 +193,7 @@ public class UserTest extends AbstractDA public void issueSYNCOPE391() { SyncopeUser user = new SyncopeUser(); user.setUsername("username"); - user.setPassword(null, CipherAlgorithm.AES, 0); + user.setPassword(null, CipherAlgorithm.AES); SyncopeUser actual = null; Throwable t = null; Modified: syncope/trunk/core/src/test/java/org/apache/syncope/core/rest/AbstractTest.java URL: http://svn.apache.org/viewvc/syncope/trunk/core/src/test/java/org/apache/syncope/core/rest/AbstractTest.java?rev=1626150&r1=1626149&r2=1626150&view=diff ============================================================================== --- syncope/trunk/core/src/test/java/org/apache/syncope/core/rest/AbstractTest.java (original) +++ syncope/trunk/core/src/test/java/org/apache/syncope/core/rest/AbstractTest.java Fri Sep 19 08:58:36 2014 @@ -33,7 +33,6 @@ import javax.ws.rs.core.Response; import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.StringUtils; import org.apache.cxf.jaxrs.client.WebClient; - import org.apache.syncope.client.SyncopeClient; import org.apache.syncope.client.SyncopeClientFactoryBean; import org.apache.syncope.common.mod.AttributeMod; @@ -49,6 +48,7 @@ import org.apache.syncope.common.service import org.apache.syncope.common.services.ResourceService; import org.apache.syncope.common.services.RoleService; import org.apache.syncope.common.services.SchemaService; +import org.apache.syncope.common.services.SecurityQuestionService; import org.apache.syncope.common.services.TaskService; import org.apache.syncope.common.services.UserSelfService; import org.apache.syncope.common.services.UserService; @@ -172,9 +172,11 @@ public abstract class AbstractTest { protected static PolicyService policyService; + protected static SecurityQuestionService securityQuestionService; + @Autowired protected DataSource testDataSource; - + @BeforeClass public static void securitySetup() { InputStream propStream = null; @@ -220,6 +222,7 @@ public abstract class AbstractTest { workflowService = adminClient.getService(WorkflowService.class); notificationService = adminClient.getService(NotificationService.class); schemaService = adminClient.getService(SchemaService.class); + securityQuestionService = adminClient.getService(SecurityQuestionService.class); } protected static String getUUIDString() { @@ -243,7 +246,7 @@ public abstract class AbstractTest { protected UserTO createUser(final UserTO userTO) { return createUser(userTO, true); } - + protected UserTO createUser(final UserTO userTO, final boolean storePassword) { Response response = userService.create(userTO, storePassword); if (response.getStatusInfo().getStatusCode() != Response.Status.CREATED.getStatusCode()) { Modified: syncope/trunk/core/src/test/java/org/apache/syncope/core/rest/NotificationTestITCase.java URL: http://svn.apache.org/viewvc/syncope/trunk/core/src/test/java/org/apache/syncope/core/rest/NotificationTestITCase.java?rev=1626150&r1=1626149&r2=1626150&view=diff ============================================================================== --- syncope/trunk/core/src/test/java/org/apache/syncope/core/rest/NotificationTestITCase.java (original) +++ syncope/trunk/core/src/test/java/org/apache/syncope/core/rest/NotificationTestITCase.java Fri Sep 19 08:58:36 2014 @@ -59,7 +59,7 @@ public class NotificationTestITCase exte @Test public void read() { - NotificationTO notificationTO = notificationService.read(1L); + NotificationTO notificationTO = notificationService.read(10L); assertNotNull(notificationTO); } @@ -90,7 +90,7 @@ public class NotificationTestITCase exte @Test public void update() { - NotificationTO notificationTO = notificationService.read(1L); + NotificationTO notificationTO = notificationService.read(10L); notificationTO.setRecipients(SyncopeClient.getUserSearchConditionBuilder().hasRoles(7L).query()); notificationService.update(notificationTO.getId(), notificationTO); Modified: syncope/trunk/core/src/test/java/org/apache/syncope/core/rest/UserSelfTestITCase.java URL: http://svn.apache.org/viewvc/syncope/trunk/core/src/test/java/org/apache/syncope/core/rest/UserSelfTestITCase.java?rev=1626150&r1=1626149&r2=1626150&view=diff ============================================================================== --- syncope/trunk/core/src/test/java/org/apache/syncope/core/rest/UserSelfTestITCase.java (original) +++ syncope/trunk/core/src/test/java/org/apache/syncope/core/rest/UserSelfTestITCase.java Fri Sep 19 08:58:36 2014 @@ -21,6 +21,7 @@ package org.apache.syncope.core.rest; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; @@ -248,4 +249,48 @@ public class UserSelfTestITCase extends assertEquals(Preference.RETURN_NO_CONTENT.toString(), response.getHeaderString(RESTHeaders.PREFERENCE_APPLIED)); assertEquals(StringUtils.EMPTY, IOUtils.toString((InputStream) response.getEntity())); } + + @Test + public void passwordReset() { + // 1. create an user with security question and answer + UserTO user = UserTestITCase.getUniqueSampleTO("[email protected]"); + user.setSecurityQuestion(1L); + user.setSecurityAnswer("Rossi"); + createUser(user); + + // 2. verify that new user is able to authenticate + SyncopeClient authClient = clientFactory.create(user.getUsername(), "password123"); + UserTO read = authClient.getService(UserSelfService.class).read(); + assertNotNull(read); + + // 3. request password reset (as anonymous) providing the expected security answer + SyncopeClient anonClient = clientFactory.createAnonymous(); + try { + anonClient.getService(UserSelfService.class).requestPasswordReset(user.getUsername(), "WRONG"); + fail(); + } catch (SyncopeClientException e) { + assertEquals(ClientExceptionType.InvalidSecurityAnswer, e.getType()); + } + anonClient.getService(UserSelfService.class).requestPasswordReset(user.getUsername(), "Rossi"); + + // 4. get token (normally sent via e-mail, now reading as admin) + String token = userService.read(read.getId()).getToken(); + assertNotNull(token); + + // 5. confirm password reset + try { + anonClient.getService(UserSelfService.class).confirmPasswordReset("WRONG TOKEN", "newPassword"); + fail(); + } catch (SyncopeClientException e) { + assertEquals(ClientExceptionType.NotFound, e.getType()); + assertTrue(e.getMessage().contains("WRONG TOKEN")); + } + anonClient.getService(UserSelfService.class).confirmPasswordReset(token, "newPassword"); + + // 6. verify that password was reset and token removed + authClient = clientFactory.create(user.getUsername(), "newPassword"); + read = authClient.getService(UserSelfService.class).read(); + assertNotNull(read); + assertNull(read.getToken()); + } } Modified: syncope/trunk/core/src/test/java/org/apache/syncope/core/rest/UserTestITCase.java URL: http://svn.apache.org/viewvc/syncope/trunk/core/src/test/java/org/apache/syncope/core/rest/UserTestITCase.java?rev=1626150&r1=1626149&r2=1626150&view=diff ============================================================================== --- syncope/trunk/core/src/test/java/org/apache/syncope/core/rest/UserTestITCase.java (original) +++ syncope/trunk/core/src/test/java/org/apache/syncope/core/rest/UserTestITCase.java Fri Sep 19 08:58:36 2014 @@ -705,7 +705,7 @@ public class UserTestITCase extends Abst assertTrue(userTO.getCreationDate().before(userTO.getLastChangeDate())); SyncopeUser passwordTestUser = new SyncopeUser(); - passwordTestUser.setPassword("new2Password", CipherAlgorithm.SHA, 0); + passwordTestUser.setPassword("new2Password", CipherAlgorithm.SHA); assertEquals(passwordTestUser.getPassword(), userTO.getPassword()); assertEquals(1, userTO.getMemberships().size()); Modified: syncope/trunk/core/src/test/resources/content.xml URL: http://svn.apache.org/viewvc/syncope/trunk/core/src/test/resources/content.xml?rev=1626150&r1=1626149&r2=1626150&view=diff ============================================================================== --- syncope/trunk/core/src/test/resources/content.xml (original) +++ syncope/trunk/core/src/test/resources/content.xml Fri Sep 19 08:58:36 2014 @@ -54,11 +54,16 @@ under the License. <CAttr id="6" owner_id="1" schema_name="selfRegistration.allowed"/> <CAttrValue id="6" attribute_id="6" booleanValue="1"/> + <CSchema name="passwordReset.allowed" type="Boolean" + mandatoryCondition="true" multivalue="0" uniqueConstraint="0" readonly="0"/> + <CAttr id="7" owner_id="1" schema_name="passwordReset.allowed"/> + <CAttrValue id="7" attribute_id="7" booleanValue="1"/> + <CSchema name="authentication.statuses" type="String" mandatoryCondition="true" multivalue="1" uniqueConstraint="0" readonly="0"/> - <CAttr id="7" owner_id="1" schema_name="authentication.statuses"/> - <CAttrValue id="7" attribute_id="7" stringValue="created"/> - <CAttrValue id="8" attribute_id="7" stringValue="active"/> + <CAttr id="8" owner_id="1" schema_name="authentication.statuses"/> + <CAttrValue id="8" attribute_id="8" stringValue="created"/> + <CAttrValue id="9" attribute_id="8" stringValue="active"/> <!-- Save user login date upon successful authentication --> <CSchema name="log.lastlogindate" type="Boolean" @@ -68,7 +73,7 @@ under the License. <!-- sample policies --> <Policy DTYPE="SyncPolicy" id="1" description="global sync policy" type="GLOBAL_SYNC" - specification='{"userJavaRule":null,"roleJavaRule":null,"conflictResolutionAction":"IGNORE","userAltSearchSchemas":[],":q!AltSearchSchemas":[]}'/> + specification='{"userJavaRule":null,"roleJavaRule":null,"conflictResolutionAction":"IGNORE","userAltSearchSchemas":[],"AltSearchSchemas":[]}'/> <Policy DTYPE="PasswordPolicy" id="2" description="global password policy" type="GLOBAL_PASSWORD" specification='{"historyLength":1,"maxLength":0,"minLength":8,"nonAlphanumericRequired":false,"alphanumericRequired":false,"digitRequired":false,"lowercaseRequired":false,"uppercaseRequired":false,"mustStartWithDigit":false,"mustntStartWithDigit":false,"mustEndWithDigit":false,"mustntEndWithDigit":false,"mustStartWithNonAlpha":false,"mustStartWithAlpha":false,"mustntStartWithNonAlpha":false,"mustntStartWithAlpha":false,"mustEndWithNonAlpha":false,"mustEndWithAlpha":false,"mustntEndWithNonAlpha":false,"mustntEndWithAlpha":false,"wordsNotPermitted":[],"schemasNotPermitted":[],"prefixesNotPermitted":["notpermitted1","notpermitted2"],"suffixesNotPermitted":[],"allowNullPassword":true}'/> <Policy DTYPE="SyncPolicy" id="3" description="sync policy 2" type="SYNC" @@ -965,15 +970,26 @@ under the License. performCreate="1" performUpdate="1" performDelete="1" syncStatus="1" fullReconciliation="0" jobClassName="org.apache.syncope.core.sync.impl.SyncJob" unmatchingRule="ASSIGN" matchingRule="IGNORE"/> - <Notification id="1" sender="[email protected]" subject="Test subject" template="test" selfAsRecipient="0" traceLevel="ALL" + <Notification id="1" active="1" recipientAttrName="email" recipientAttrType="UserSchema" selfAsRecipient="1" + sender="[email protected]" subject="Password Reset request" template="requestPasswordReset" + traceLevel="FAILURES" userAbout="token!=$null"/> + <Notification_events Notification_id="1" events="[CUSTOM]:[]:[]:[requestPasswordReset]:[SUCCESS]"/> + + <Notification id="2" active="1" recipientAttrName="email" recipientAttrType="UserSchema" selfAsRecipient="1" + sender="[email protected]" subject="Password Reset successful" template="confirmPasswordReset" + traceLevel="FAILURES" userAbout="token!=$null"/> + <Notification_events Notification_id="2" events="[CUSTOM]:[]:[]:[confirmPasswordReset]:[SUCCESS]"/> + + <Notification id="10" sender="[email protected]" subject="Test subject" template="test" selfAsRecipient="0" + traceLevel="FAILURES" userAbout="fullname==*o*;fullname==*i*" recipients="$roles==7" recipientAttrType="UserSchema" recipientAttrName="email" active="1"/> - <Notification_events Notification_id="1" events="[CUSTOM]:[]:[]:[unexisting1]:[FAILURE]"/> - <Notification_events Notification_id="1" events="[CUSTOM]:[]:[]:[unexisting2]:[SUCCESS]"/> + <Notification_events Notification_id="10" events="[CUSTOM]:[]:[]:[unexisting1]:[FAILURE]"/> + <Notification_events Notification_id="10" events="[CUSTOM]:[]:[]:[unexisting2]:[SUCCESS]"/> - <NotificationTask_recipients notificationtask_id="8" address="[email protected]"/> - + <NotificationTask_recipients notificationtask_id="8" address="[email protected]"/> + <Report id="1" name="test"/> <ReportletConfInstance id="1" Report_id="1" serializedInstance='{"@class":"org.apache.syncope.common.report.UserReportletConf","name":"testUserReportlet","matchingCond":null,"attributes":["fullname","gender"],"derivedAttributes":["cn"],"virtualAttributes":["virtualdata"],"features":["id","username","workflowId","status","creationDate","lastLoginDate","changePwdDate","passwordHistorySize","failedLoginCount","memberships","resources"]}'/> @@ -1067,6 +1083,11 @@ under the License. <Entitlement name="AUDIT_LIST"/> <Entitlement name="AUDIT_ENABLE"/> <Entitlement name="AUDIT_DISABLE"/> + <Entitlement name="SECURITY_QUESTION_LIST"/> + <Entitlement name="SECURITY_QUESTION_READ"/> + <Entitlement name="SECURITY_QUESTION_CREATE"/> + <Entitlement name="SECURITY_QUESTION_UPDATE"/> + <Entitlement name="SECURITY_QUESTION_DELETE"/> <Entitlement name="ROLE_1"/> <Entitlement name="ROLE_2"/> <Entitlement name="ROLE_3"/> @@ -1098,4 +1119,6 @@ under the License. <SyncopeRole_Entitlement entitlement_name="SCHEMA_READ" role_id="8"/> <SyncopeRole_Entitlement entitlement_name="ROLE_READ" role_id="8"/> <SyncopeRole_Entitlement entitlement_name="WORKFLOW_FORM_CLAIM" role_id="8"/> + + <SecurityQuestion id="1" content="What's your mother's maiden name?"/> </dataset> Modified: syncope/trunk/core/src/test/resources/mail.properties URL: http://svn.apache.org/viewvc/syncope/trunk/core/src/test/resources/mail.properties?rev=1626150&r1=1626149&r2=1626150&view=diff ============================================================================== --- syncope/trunk/core/src/test/resources/mail.properties (original) +++ syncope/trunk/core/src/test/resources/mail.properties Fri Sep 19 08:58:36 2014 @@ -21,4 +21,4 @@ smtpPassword= smtpProtocol=smtp smtpEncoding=UTF-8 smtpConnectionTimeout=3000 -mailDebug=true +mailDebug=true \ No newline at end of file Modified: syncope/trunk/core/src/test/resources/userWorkflow.bpmn20.xml URL: http://svn.apache.org/viewvc/syncope/trunk/core/src/test/resources/userWorkflow.bpmn20.xml?rev=1626150&r1=1626149&r2=1626150&view=diff ============================================================================== --- syncope/trunk/core/src/test/resources/userWorkflow.bpmn20.xml (original) +++ syncope/trunk/core/src/test/resources/userWorkflow.bpmn20.xml Fri Sep 19 08:58:36 2014 @@ -28,11 +28,11 @@ under the License. targetNamespace="http://activiti.org/bpmn20"> <process id="userWorkflow" name="User Workflow" isExecutable="true"> - <startEvent id="theStart"></startEvent> - <sequenceFlow id="flow1" sourceRef="theStart" targetRef="create"></sequenceFlow> - <serviceTask id="create" name="Create" activiti:expression="#{create.execute(execution.processInstanceId)}"></serviceTask> - <sequenceFlow id="flow2" sourceRef="create" targetRef="createGW"></sequenceFlow> - <exclusiveGateway id="createGW"></exclusiveGateway> + <startEvent id="theStart"/> + <sequenceFlow id="flow1" sourceRef="theStart" targetRef="create"/> + <serviceTask id="create" name="Create" activiti:expression="#{create.execute(execution.processInstanceId)}"/> + <sequenceFlow id="flow2" sourceRef="create" targetRef="createGW"/> + <exclusiveGateway id="createGW"/> <sequenceFlow id="createAsAnonymous2Approval" sourceRef="createGW" targetRef="createApproval"> <conditionExpression xsi:type="tFormalExpression"><![CDATA[${wfExecutor == 'anonymous' || syncopeUser.getRoleIds().contains(9)}]]></conditionExpression> </sequenceFlow> @@ -41,20 +41,20 @@ under the License. </sequenceFlow> <userTask id="createApproval" name="Create approval" activiti:candidateGroups="7" activiti:formKey="createApproval"> <extensionElements> - <activiti:formProperty id="username" name="Username" type="string" expression="${syncopeUser.username}" writable="false"></activiti:formProperty> - <activiti:formProperty id="approve" name="Approve?" type="boolean" variable="approve" required="true"></activiti:formProperty> - <activiti:formProperty id="rejectReason" name="Reason for rejecting" type="string" variable="rejectReason"></activiti:formProperty> + <activiti:formProperty id="username" name="Username" type="string" expression="${syncopeUser.username}" writable="false"/> + <activiti:formProperty id="approve" name="Approve?" type="boolean" variable="approve" required="true"/> + <activiti:formProperty id="rejectReason" name="Reason for rejecting" type="string" variable="rejectReason"/> </extensionElements> </userTask> - <sequenceFlow id="flow3" sourceRef="createApproval" targetRef="createApprovalGW"></sequenceFlow> - <exclusiveGateway id="createApprovalGW"></exclusiveGateway> + <sequenceFlow id="flow3" sourceRef="createApproval" targetRef="createApprovalGW"/> + <exclusiveGateway id="createApprovalGW"/> <sequenceFlow id="createApprovalGW2EnableGW" sourceRef="createApprovalGW" targetRef="enableGW"> <conditionExpression xsi:type="tFormalExpression"><![CDATA[${approve}]]></conditionExpression> </sequenceFlow> <sequenceFlow id="createApproval2Reject" sourceRef="createApprovalGW" targetRef="reject"> <conditionExpression xsi:type="tFormalExpression"><![CDATA[${!approve}]]></conditionExpression> </sequenceFlow> - <exclusiveGateway id="enableGW"></exclusiveGateway> + <exclusiveGateway id="enableGW"/> <sequenceFlow id="createApprovalGW2OptIn" sourceRef="enableGW" targetRef="generateToken"> <conditionExpression xsi:type="tFormalExpression"><![CDATA[${syncopeUser.getRoleIds().contains(11)}]]></conditionExpression> </sequenceFlow> @@ -63,32 +63,32 @@ under the License. </sequenceFlow> <sequenceFlow id="createApprovalGW2Active" sourceRef="enableGW" targetRef="active"> <conditionExpression xsi:type="tFormalExpression"><![CDATA[${enabled}]]></conditionExpression> - </sequenceFlow> + </sequenceFlow> <sequenceFlow id="createApprovalGW2Suspended" sourceRef="enableGW" targetRef="suspend"> <conditionExpression xsi:type="tFormalExpression"><![CDATA[${!enabled}]]></conditionExpression> </sequenceFlow> - <serviceTask id="activate" name="Activate" activiti:expression="#{autoActivate.execute(execution.processInstanceId)}"></serviceTask> - <sequenceFlow id="flow4" sourceRef="activate" targetRef="active"></sequenceFlow> - <serviceTask id="generateToken" name="Generate token" activiti:expression="#{generateToken.execute(execution.processInstanceId)}"></serviceTask> - <sequenceFlow id="flow5" sourceRef="generateToken" targetRef="created"></sequenceFlow> - <userTask id="created" name="Created"></userTask> - <sequenceFlow id="flow6" sourceRef="created" targetRef="optinGW"></sequenceFlow> - <exclusiveGateway id="optinGW"></exclusiveGateway> + <serviceTask id="activate" name="Activate" activiti:expression="#{autoActivate.execute(execution.processInstanceId)}"/> + <sequenceFlow id="flow4" sourceRef="activate" targetRef="active"/> + <serviceTask id="generateToken" name="Generate token" activiti:expression="#{generateToken.execute(execution.processInstanceId)}"/> + <sequenceFlow id="flow5" sourceRef="generateToken" targetRef="created"/> + <userTask id="created" name="Created"/> + <sequenceFlow id="flow6" sourceRef="created" targetRef="optinGW"/> + <exclusiveGateway id="optinGW"/> <sequenceFlow id="created2Activate" sourceRef="optinGW" targetRef="removeToken"> <conditionExpression xsi:type="tFormalExpression"><![CDATA[${syncopeUser.checkToken(token)}]]></conditionExpression> </sequenceFlow> <sequenceFlow id="created2Created" sourceRef="optinGW" targetRef="created"> <conditionExpression xsi:type="tFormalExpression"><![CDATA[${!syncopeUser.checkToken(token)}]]></conditionExpression> </sequenceFlow> - <scriptTask id="removeToken" name="Remove Token and Activate" scriptFormat="groovy" activiti:autoStoreVariables="true"> + <scriptTask id="removeToken" name="Remove Token and Activate" scriptFormat="groovy" activiti:autoStoreVariables="false"> <script> syncopeUser.removeToken() </script> </scriptTask> - <sequenceFlow id="flow7" sourceRef="removeToken" targetRef="active"></sequenceFlow> - <userTask id="active" name="Active"></userTask> - <sequenceFlow id="flow8" sourceRef="active" targetRef="activeGw"></sequenceFlow> - <exclusiveGateway id="activeGw"></exclusiveGateway> + <sequenceFlow id="flow7" sourceRef="removeToken" targetRef="active"/> + <userTask id="active" name="Active"/> + <sequenceFlow id="flow8" sourceRef="active" targetRef="activeGw"/> + <exclusiveGateway id="activeGw"/> <sequenceFlow id="active2UpdateApproval" sourceRef="activeGw" targetRef="updateApproval"> <conditionExpression xsi:type="tFormalExpression"><![CDATA[${wfExecutor == syncopeUser.getUsername() and task == 'update' and (!userMod.getMembershipsToAdd().isEmpty() or !userMod.getMembershipsToRemove().isEmpty())}]]></conditionExpression> @@ -101,421 +101,476 @@ under the License. </sequenceFlow> <sequenceFlow id="active2Suspend" sourceRef="activeGw" targetRef="suspend"> <conditionExpression xsi:type="tFormalExpression"><![CDATA[${task == 'suspend'}]]></conditionExpression> - </sequenceFlow> + </sequenceFlow> <sequenceFlow id="active2Delete" sourceRef="activeGw" targetRef="delete"> <conditionExpression xsi:type="tFormalExpression"><![CDATA[${task == 'delete'}]]></conditionExpression> - </sequenceFlow> + </sequenceFlow> + <sequenceFlow id="active2RequestPasswordReset" sourceRef="activeGw" targetRef="generateToken4PasswordReset"> + <conditionExpression xsi:type="tFormalExpression"><![CDATA[${task == 'requestPasswordReset'}]]></conditionExpression> + </sequenceFlow> + <sequenceFlow id="active2ConfirmPasswordReset" sourceRef="activeGw" targetRef="checkToken4ConfirmPasswordReset"> + <conditionExpression xsi:type="tFormalExpression"><![CDATA[${task == 'confirmPasswordReset'}]]></conditionExpression> + </sequenceFlow> <userTask id="updateApproval" name="Update approval" activiti:candidateGroups="7" activiti:formKey="updateApproval"> <extensionElements> - <activiti:formProperty id="username" name="Username" type="string" expression="${syncopeUser.username}" writable="false"></activiti:formProperty> - <activiti:formProperty id="approve" name="Approve?" type="boolean" variable="approve" required="true"></activiti:formProperty> - <activiti:formProperty id="rejectReason" name="Reason for rejecting" type="string" variable="rejectReason"></activiti:formProperty> + <activiti:formProperty id="username" name="Username" type="string" expression="${syncopeUser.username}" writable="false"/> + <activiti:formProperty id="approve" name="Approve?" type="boolean" variable="approve" required="true"/> + <activiti:formProperty id="rejectReason" name="Reason for rejecting" type="string" variable="rejectReason"/> </extensionElements> </userTask> - <sequenceFlow id="flow8bis" sourceRef="updateApproval" targetRef="updateApprovalGW"></sequenceFlow> - <exclusiveGateway id="updateApprovalGW"></exclusiveGateway> + <sequenceFlow id="flow8bis" sourceRef="updateApproval" targetRef="updateApprovalGW"/> + <exclusiveGateway id="updateApprovalGW"/> <sequenceFlow id="updateApprovalGW2Update" sourceRef="updateApprovalGW" targetRef="update"> <conditionExpression xsi:type="tFormalExpression"><![CDATA[${approve}]]></conditionExpression> </sequenceFlow> <sequenceFlow id="updateApprovalGW2Reject" sourceRef="updateApprovalGW" targetRef="rejectUpdate"> <conditionExpression xsi:type="tFormalExpression"><![CDATA[${!approve}]]></conditionExpression> </sequenceFlow> - <scriptTask id="rejectUpdate" name="Reject update" scriptFormat="groovy" activiti:autoStoreVariables="true"> + <scriptTask id="rejectUpdate" name="Reject update" scriptFormat="groovy" activiti:autoStoreVariables="false"> <script> execution.setVariable("propByResource", null); </script> </scriptTask> - <sequenceFlow id="flow8ter" sourceRef="rejectUpdate" targetRef="active"></sequenceFlow> - <serviceTask id="update" name="Update" activiti:expression="#{update.execute(execution.processInstanceId)}"></serviceTask> - <sequenceFlow id="flow9" sourceRef="update" targetRef="active"></sequenceFlow> - <serviceTask id="suspend" name="Suspend" activiti:expression="#{suspend.execute(execution.processInstanceId)}"></serviceTask> - <sequenceFlow id="flow10" sourceRef="suspend" targetRef="suspended"></sequenceFlow> - <userTask id="suspended" name="Suspended"></userTask> - <sequenceFlow id="flow11" sourceRef="suspended" targetRef="suspendedGw"></sequenceFlow> - <exclusiveGateway id="suspendedGw"></exclusiveGateway> + <sequenceFlow id="flow8ter" sourceRef="rejectUpdate" targetRef="active"/> + <serviceTask id="update" name="Update" activiti:expression="#{update.execute(execution.processInstanceId)}"/> + <sequenceFlow id="flow9" sourceRef="update" targetRef="active"/> + <serviceTask id="suspend" name="Suspend" activiti:expression="#{suspend.execute(execution.processInstanceId)}"/> + <sequenceFlow id="flow10" sourceRef="suspend" targetRef="suspended"/> + <userTask id="suspended" name="Suspended"/> + <sequenceFlow id="flow11" sourceRef="suspended" targetRef="suspendedGw"/> + <exclusiveGateway id="suspendedGw"/> <sequenceFlow id="suspended2Reactivate" sourceRef="suspendedGw" targetRef="reactivate"> <conditionExpression xsi:type="tFormalExpression"><![CDATA[${task == 'reactivate'}]]></conditionExpression> </sequenceFlow> <sequenceFlow id="suspended2Delete" sourceRef="suspendedGw" targetRef="delete"> <conditionExpression xsi:type="tFormalExpression"><![CDATA[${task == 'delete'}]]></conditionExpression> </sequenceFlow> - <serviceTask id="reactivate" name="Reactivate" activiti:expression="#{reactivate.execute(execution.processInstanceId)}"></serviceTask> - <sequenceFlow id="flow12" sourceRef="reactivate" targetRef="active"></sequenceFlow> - <scriptTask id="reject" name="Reject" scriptFormat="groovy" activiti:autoStoreVariables="true"> + <serviceTask id="reactivate" name="Reactivate" activiti:expression="#{reactivate.execute(execution.processInstanceId)}"/> + <sequenceFlow id="flow12" sourceRef="reactivate" targetRef="active"/> + <scriptTask id="reject" name="Reject" scriptFormat="groovy" activiti:autoStoreVariables="false"> <script> def scriptVar = rejectReason execution.setVariable("propByResource", null); </script> </scriptTask> - <sequenceFlow id="flow13" sourceRef="reject" targetRef="rejected"></sequenceFlow> - <userTask id="rejected" name="Rejected"></userTask> - <sequenceFlow id="flow14" sourceRef="rejected" targetRef="rejectedGw"></sequenceFlow> - <exclusiveGateway id="rejectedGw"></exclusiveGateway> + <sequenceFlow id="flow13" sourceRef="reject" targetRef="rejected"/> + <userTask id="rejected" name="Rejected"/> + <sequenceFlow id="flow14" sourceRef="rejected" targetRef="rejectedGw"/> + <exclusiveGateway id="rejectedGw"/> <sequenceFlow id="rejected2Delete" sourceRef="rejectedGw" targetRef="delete"> <conditionExpression xsi:type="tFormalExpression"><![CDATA[${task == 'delete'}]]></conditionExpression> </sequenceFlow> <sequenceFlow id="rejected2Rejected" sourceRef="rejectedGw" targetRef="rejected"> <conditionExpression xsi:type="tFormalExpression"><![CDATA[${empty task}]]></conditionExpression> - </sequenceFlow> + </sequenceFlow> <userTask id="deleteApproval" name="Delete approval" activiti:candidateGroups="7" activiti:formKey="deleteApproval"> <extensionElements> - <activiti:formProperty id="username" name="Username" type="string" expression="${syncopeUser.username}" writable="false"></activiti:formProperty> - <activiti:formProperty id="approve" name="Approve?" type="boolean" variable="approve" required="true"></activiti:formProperty> - <activiti:formProperty id="rejectReason" name="Reason for rejecting" type="string" variable="rejectReason"></activiti:formProperty> + <activiti:formProperty id="username" name="Username" type="string" expression="${syncopeUser.username}" writable="false"/> + <activiti:formProperty id="approve" name="Approve?" type="boolean" variable="approve" required="true"/> + <activiti:formProperty id="rejectReason" name="Reason for rejecting" type="string" variable="rejectReason"/> </extensionElements> </userTask> - <sequenceFlow id="flow14bis" sourceRef="deleteApproval" targetRef="deleteApprovalGW"></sequenceFlow> - <exclusiveGateway id="deleteApprovalGW"></exclusiveGateway> + <sequenceFlow id="flow14bis" sourceRef="deleteApproval" targetRef="deleteApprovalGW"/> + <exclusiveGateway id="deleteApprovalGW"/> <sequenceFlow id="deleteApprovalGW2Delete" sourceRef="deleteApprovalGW" targetRef="delete"> <conditionExpression xsi:type="tFormalExpression"><![CDATA[${approve}]]></conditionExpression> </sequenceFlow> <sequenceFlow id="deleteApprovalGW2Reject" sourceRef="deleteApprovalGW" targetRef="rejectDelete"> <conditionExpression xsi:type="tFormalExpression"><![CDATA[${!approve}]]></conditionExpression> </sequenceFlow> - <scriptTask id="rejectDelete" name="Reject delete" scriptFormat="groovy" activiti:autoStoreVariables="true"> + <scriptTask id="rejectDelete" name="Reject delete" scriptFormat="groovy" activiti:autoStoreVariables="false"> <script> execution.setVariable("propByResource", null); </script> </scriptTask> - <sequenceFlow id="flow14ter" sourceRef="rejectDelete" targetRef="active"></sequenceFlow> - <serviceTask id="delete" name="Delete" activiti:expression="#{delete.execute(execution.processInstanceId)}"></serviceTask> - <sequenceFlow id="flow99" sourceRef="delete" targetRef="theEnd"></sequenceFlow> - <endEvent id="theEnd"></endEvent> + <sequenceFlow id="flow14ter" sourceRef="rejectDelete" targetRef="active"/> + + <serviceTask id="generateToken4PasswordReset" name="Generate token" activiti:expression="#{generateToken.execute(execution.processInstanceId)}"/> + <sequenceFlow id="flow15" sourceRef="generateToken4PasswordReset" targetRef="notify4RequestPasswordReset"/> + <serviceTask id="notify4RequestPasswordReset" name="Notification" activiti:expression="#{notify.execute(execution.processInstanceId)}"/> + <sequenceFlow id="flow16" sourceRef="notify4RequestPasswordReset" targetRef="active"/> + + <serviceTask id="checkToken4ConfirmPasswordReset" name="Check token, remove and update password" activiti:expression="#{passwordReset.execute(execution.processInstanceId)}"/> + <sequenceFlow id="flow17" sourceRef="checkToken4ConfirmPasswordReset" targetRef="notify4ConfirmPasswordReset"/> + <serviceTask id="notify4ConfirmPasswordReset" name="Notification" activiti:expression="#{notify.execute(execution.processInstanceId)}"/> + <sequenceFlow id="flow18" sourceRef="notify4ConfirmPasswordReset" targetRef="active"/> + + <serviceTask id="delete" name="Delete" activiti:expression="#{delete.execute(execution.processInstanceId)}"/> + <sequenceFlow id="flow99" sourceRef="delete" targetRef="theEnd"/> + <endEvent id="theEnd"/> </process> + <bpmndi:BPMNDiagram id="BPMNDiagram_userWorkflow"> <bpmndi:BPMNPlane bpmnElement="userWorkflow" id="BPMNPlane_userWorkflow"> - <bpmndi:BPMNShape bpmnElement="update" id="BPMNShape_update"> - <omgdc:Bounds height="60.0" width="100.0" x="1790.0" y="580.0"></omgdc:Bounds> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape bpmnElement="suspend" id="BPMNShape_suspend"> - <omgdc:Bounds height="60.0" width="100.0" x="1490.0" y="100.0"></omgdc:Bounds> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape bpmnElement="reject" id="BPMNShape_reject"> - <omgdc:Bounds height="60.0" width="100.0" x="560.0" y="659.0"></omgdc:Bounds> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape bpmnElement="rejectedGw" id="BPMNShape_rejectedGw"> - <omgdc:Bounds height="40.0" width="40.0" x="890.0" y="775.0"></omgdc:Bounds> + <bpmndi:BPMNShape bpmnElement="theStart" id="BPMNShape_theStart"> + <omgdc:Bounds height="30.0" width="30.0" x="0.0" y="512.0"/> </bpmndi:BPMNShape> - <bpmndi:BPMNShape bpmnElement="activeGw" id="BPMNShape_activeGw"> - <omgdc:Bounds height="40.0" width="40.0" x="1400.0" y="520.0"></omgdc:Bounds> + <bpmndi:BPMNShape bpmnElement="create" id="BPMNShape_create"> + <omgdc:Bounds height="60.0" width="100.0" x="80.0" y="497.0"/> </bpmndi:BPMNShape> - <bpmndi:BPMNShape bpmnElement="updateApprovalGW" id="BPMNShape_updateApprovalGW"> - <omgdc:Bounds height="40.0" width="40.0" x="1670.0" y="620.0"></omgdc:Bounds> + <bpmndi:BPMNShape bpmnElement="createGW" id="BPMNShape_createGW"> + <omgdc:Bounds height="40.0" width="40.0" x="230.0" y="506.0"/> </bpmndi:BPMNShape> - <bpmndi:BPMNShape bpmnElement="theStart" id="BPMNShape_theStart"> - <omgdc:Bounds height="35.0" width="35.0" x="0.0" y="512.0"></omgdc:Bounds> + <bpmndi:BPMNShape bpmnElement="createApproval" id="BPMNShape_createApproval"> + <omgdc:Bounds height="60.0" width="100.0" x="320.0" y="560.0"/> </bpmndi:BPMNShape> <bpmndi:BPMNShape bpmnElement="createApprovalGW" id="BPMNShape_createApprovalGW"> - <omgdc:Bounds height="40.0" width="40.0" x="470.0" y="556.0"></omgdc:Bounds> + <omgdc:Bounds height="40.0" width="40.0" x="470.0" y="556.0"/> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape bpmnElement="enableGW" id="BPMNShape_enableGW"> + <omgdc:Bounds height="40.0" width="40.0" x="590.0" y="429.0"/> </bpmndi:BPMNShape> <bpmndi:BPMNShape bpmnElement="activate" id="BPMNShape_activate"> - <omgdc:Bounds height="60.0" width="100.0" x="710.0" y="610.0"></omgdc:Bounds> + <omgdc:Bounds height="60.0" width="100.0" x="710.0" y="610.0"/> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape bpmnElement="generateToken" id="BPMNShape_generateToken"> + <omgdc:Bounds height="60.0" width="100.0" x="702.0" y="188.0"/> </bpmndi:BPMNShape> <bpmndi:BPMNShape bpmnElement="created" id="BPMNShape_created"> - <omgdc:Bounds height="60.0" width="100.0" x="852.0" y="213.0"></omgdc:Bounds> + <omgdc:Bounds height="60.0" width="100.0" x="852.0" y="213.0"/> </bpmndi:BPMNShape> - <bpmndi:BPMNShape bpmnElement="rejected" id="BPMNShape_rejected"> - <omgdc:Bounds height="60.0" width="100.0" x="710.0" y="770.0"></omgdc:Bounds> + <bpmndi:BPMNShape bpmnElement="optinGW" id="BPMNShape_optinGW"> + <omgdc:Bounds height="40.0" width="40.0" x="1002.0" y="240.0"/> </bpmndi:BPMNShape> - <bpmndi:BPMNShape bpmnElement="delete" id="BPMNShape_delete"> - <omgdc:Bounds height="60.0" width="100.0" x="1940.0" y="438.0"></omgdc:Bounds> + <bpmndi:BPMNShape bpmnElement="removeToken" id="BPMNShape_removeToken"> + <omgdc:Bounds height="60.0" width="100.0" x="1092.0" y="248.0"/> </bpmndi:BPMNShape> - <bpmndi:BPMNShape bpmnElement="rejectDelete" id="BPMNShape_rejectDelete"> - <omgdc:Bounds height="60.0" width="100.0" x="1790.0" y="320.0"></omgdc:Bounds> + <bpmndi:BPMNShape bpmnElement="active" id="BPMNShape_active"> + <omgdc:Bounds height="60.0" width="100.0" x="1030.0" y="511.0"/> </bpmndi:BPMNShape> - <bpmndi:BPMNShape bpmnElement="createGW" id="BPMNShape_createGW"> - <omgdc:Bounds height="40.0" width="40.0" x="230.0" y="506.0"></omgdc:Bounds> + <bpmndi:BPMNShape bpmnElement="activeGw" id="BPMNShape_activeGw"> + <omgdc:Bounds height="40.0" width="40.0" x="1400.0" y="520.0"/> </bpmndi:BPMNShape> - <bpmndi:BPMNShape bpmnElement="deleteApproval" id="BPMNShape_deleteApproval"> - <omgdc:Bounds height="60.0" width="100.0" x="1490.0" y="360.0"></omgdc:Bounds> + <bpmndi:BPMNShape bpmnElement="updateApproval" id="BPMNShape_updateApproval"> + <omgdc:Bounds height="60.0" width="100.0" x="1490.0" y="740.0"/> </bpmndi:BPMNShape> - <bpmndi:BPMNShape bpmnElement="createApproval" id="BPMNShape_createApproval"> - <omgdc:Bounds height="60.0" width="100.0" x="320.0" y="560.0"></omgdc:Bounds> + <bpmndi:BPMNShape bpmnElement="updateApprovalGW" id="BPMNShape_updateApprovalGW"> + <omgdc:Bounds height="40.0" width="40.0" x="1670.0" y="740.0"/> </bpmndi:BPMNShape> - <bpmndi:BPMNShape bpmnElement="deleteApprovalGW" id="BPMNShape_deleteApprovalGW"> - <omgdc:Bounds height="40.0" width="40.0" x="1670.0" y="380.0"></omgdc:Bounds> + <bpmndi:BPMNShape bpmnElement="rejectUpdate" id="BPMNShape_rejectUpdate"> + <omgdc:Bounds height="60.0" width="100.0" x="1790.0" y="840.0"/> </bpmndi:BPMNShape> - <bpmndi:BPMNShape bpmnElement="removeToken" id="BPMNShape_removeToken"> - <omgdc:Bounds height="60.0" width="100.0" x="1092.0" y="248.0"></omgdc:Bounds> + <bpmndi:BPMNShape bpmnElement="update" id="BPMNShape_update"> + <omgdc:Bounds height="60.0" width="100.0" x="1790.0" y="700.0"/> </bpmndi:BPMNShape> - <bpmndi:BPMNShape bpmnElement="updateApproval" id="BPMNShape_updateApproval"> - <omgdc:Bounds height="60.0" width="100.0" x="1490.0" y="620.0"></omgdc:Bounds> + <bpmndi:BPMNShape bpmnElement="suspend" id="BPMNShape_suspend"> + <omgdc:Bounds height="60.0" width="100.0" x="1490.0" y="100.0"/> </bpmndi:BPMNShape> - <bpmndi:BPMNShape bpmnElement="enableGW" id="BPMNShape_enableGW"> - <omgdc:Bounds height="40.0" width="40.0" x="590.0" y="429.0"></omgdc:Bounds> + <bpmndi:BPMNShape bpmnElement="suspended" id="BPMNShape_suspended"> + <omgdc:Bounds height="60.0" width="100.0" x="1640.0" y="120.0"/> </bpmndi:BPMNShape> - <bpmndi:BPMNShape bpmnElement="generateToken" id="BPMNShape_generateToken"> - <omgdc:Bounds height="60.0" width="100.0" x="702.0" y="188.0"></omgdc:Bounds> + <bpmndi:BPMNShape bpmnElement="suspendedGw" id="BPMNShape_suspendedGw"> + <omgdc:Bounds height="40.0" width="40.0" x="1820.0" y="180.0"/> </bpmndi:BPMNShape> - <bpmndi:BPMNShape bpmnElement="rejectUpdate" id="BPMNShape_rejectUpdate"> - <omgdc:Bounds height="60.0" width="100.0" x="1790.0" y="840.0"></omgdc:Bounds> + <bpmndi:BPMNShape bpmnElement="reactivate" id="BPMNShape_reactivate"> + <omgdc:Bounds height="60.0" width="100.0" x="1940.0" y="110.0"/> </bpmndi:BPMNShape> - <bpmndi:BPMNShape bpmnElement="create" id="BPMNShape_create"> - <omgdc:Bounds height="60.0" width="100.0" x="80.0" y="497.0"></omgdc:Bounds> + <bpmndi:BPMNShape bpmnElement="reject" id="BPMNShape_reject"> + <omgdc:Bounds height="60.0" width="100.0" x="560.0" y="659.0"/> </bpmndi:BPMNShape> - <bpmndi:BPMNShape bpmnElement="reactivate" id="BPMNShape_reactivate"> - <omgdc:Bounds height="60.0" width="100.0" x="1940.0" y="110.0"></omgdc:Bounds> + <bpmndi:BPMNShape bpmnElement="rejected" id="BPMNShape_rejected"> + <omgdc:Bounds height="60.0" width="100.0" x="710.0" y="770.0"/> </bpmndi:BPMNShape> - <bpmndi:BPMNShape bpmnElement="suspended" id="BPMNShape_suspended"> - <omgdc:Bounds height="60.0" width="100.0" x="1640.0" y="120.0"></omgdc:Bounds> + <bpmndi:BPMNShape bpmnElement="rejectedGw" id="BPMNShape_rejectedGw"> + <omgdc:Bounds height="40.0" width="40.0" x="890.0" y="775.0"/> </bpmndi:BPMNShape> - <bpmndi:BPMNShape bpmnElement="suspendedGw" id="BPMNShape_suspendedGw"> - <omgdc:Bounds height="40.0" width="40.0" x="1820.0" y="180.0"></omgdc:Bounds> + <bpmndi:BPMNShape bpmnElement="deleteApproval" id="BPMNShape_deleteApproval"> + <omgdc:Bounds height="60.0" width="100.0" x="1490.0" y="280.0"/> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape bpmnElement="deleteApprovalGW" id="BPMNShape_deleteApprovalGW"> + <omgdc:Bounds height="40.0" width="40.0" x="1670.0" y="300.0"/> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape bpmnElement="rejectDelete" id="BPMNShape_rejectDelete"> + <omgdc:Bounds height="60.0" width="100.0" x="1790.0" y="240.0"/> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape bpmnElement="delete" id="BPMNShape_delete"> + <omgdc:Bounds height="60.0" width="100.0" x="1940.0" y="358.0"/> </bpmndi:BPMNShape> <bpmndi:BPMNShape bpmnElement="theEnd" id="BPMNShape_theEnd"> - <omgdc:Bounds height="35.0" width="35.0" x="2080.0" y="451.0"></omgdc:Bounds> + <omgdc:Bounds height="28.0" width="28.0" x="2078.1893792531678" y="374.0"/> </bpmndi:BPMNShape> - <bpmndi:BPMNShape bpmnElement="active" id="BPMNShape_active"> - <omgdc:Bounds height="60.0" width="100.0" x="1030.0" y="511.0"></omgdc:Bounds> + <bpmndi:BPMNShape bpmnElement="generateToken4PasswordReset" id="BPMNShape_generateToken4PasswordReset"> + <omgdc:Bounds height="59.99999999999994" width="100.0" x="1543.209935088986" y="452.6749142927693"/> </bpmndi:BPMNShape> - <bpmndi:BPMNShape bpmnElement="optinGW" id="BPMNShape_optinGW"> - <omgdc:Bounds height="40.0" width="40.0" x="1002.0" y="240.0"></omgdc:Bounds> + <bpmndi:BPMNShape bpmnElement="notify4RequestPasswordReset" id="BPMNShape_notify4RequestPasswordReset"> + <omgdc:Bounds height="60.00000000000006" width="100.0" x="1748.9712597675173" y="452.6749142927692"/> </bpmndi:BPMNShape> - <bpmndi:BPMNEdge bpmnElement="flow12" id="BPMNEdge_flow12"> - <omgdi:waypoint x="1940.0" y="140.0"></omgdi:waypoint> - <omgdi:waypoint x="1928.0" y="127.0"></omgdi:waypoint> - <omgdi:waypoint x="1378.0" y="40.0"></omgdi:waypoint> - <omgdi:waypoint x="1080.0" y="511.0"></omgdi:waypoint> + <bpmndi:BPMNShape bpmnElement="checkToken4ConfirmPasswordReset" id="BPMNShape_checkToken4ConfirmPasswordReset"> + <omgdc:Bounds height="60.0" width="100.0" x="1558.797798366986" y="561.167207412115"/> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape bpmnElement="notify4ConfirmPasswordReset" id="BPMNShape_notify4ConfirmPasswordReset"> + <omgdc:Bounds height="60.0" width="100.0" x="1748.971259767517" y="561.167207412115"/> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge bpmnElement="flow17" id="BPMNEdge_flow17"> + <omgdi:waypoint x="1658.797798366986" y="591.167207412115"/> + <omgdi:waypoint x="1748.971259767517" y="591.167207412115"/> </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge bpmnElement="active2DeleteApproval" id="BPMNEdge_active2DeleteApproval"> - <omgdi:waypoint x="1440.0" y="540.0"></omgdi:waypoint> - <omgdi:waypoint x="1454.0" y="540.0"></omgdi:waypoint> - <omgdi:waypoint x="1454.0" y="390.0"></omgdi:waypoint> - <omgdi:waypoint x="1490.0" y="390.0"></omgdi:waypoint> + <bpmndi:BPMNEdge bpmnElement="flow12" id="BPMNEdge_flow12"> + <omgdi:waypoint x="1940.0" y="129.51612903225805"/> + <omgdi:waypoint x="1928.0" y="127.0"/> + <omgdi:waypoint x="1378.0" y="40.0"/> + <omgdi:waypoint x="1097.8443113772455" y="511.0"/> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge bpmnElement="flow11" id="BPMNEdge_flow11"> - <omgdi:waypoint x="1740.0" y="150.0"></omgdi:waypoint> - <omgdi:waypoint x="1752.0" y="150.0"></omgdi:waypoint> - <omgdi:waypoint x="1752.0" y="200.0"></omgdi:waypoint> - <omgdi:waypoint x="1820.0" y="200.0"></omgdi:waypoint> + <omgdi:waypoint x="1740.0" y="150.0"/> + <omgdi:waypoint x="1752.0" y="150.0"/> + <omgdi:waypoint x="1752.0" y="200.0"/> + <omgdi:waypoint x="1820.0" y="200.0"/> </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge bpmnElement="flow10" id="BPMNEdge_flow10"> - <omgdi:waypoint x="1590.0" y="130.0"></omgdi:waypoint> - <omgdi:waypoint x="1602.0" y="130.0"></omgdi:waypoint> - <omgdi:waypoint x="1602.0" y="150.0"></omgdi:waypoint> - <omgdi:waypoint x="1640.0" y="150.0"></omgdi:waypoint> + <bpmndi:BPMNEdge bpmnElement="active2DeleteApproval" id="BPMNEdge_active2DeleteApproval"> + <omgdi:waypoint x="1440.0" y="540.0"/> + <omgdi:waypoint x="1454.0" y="540.0"/> + <omgdi:waypoint x="1454.0" y="310.0"/> + <omgdi:waypoint x="1490.0" y="310.0"/> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge bpmnElement="flow14bis" id="BPMNEdge_flow14bis"> - <omgdi:waypoint x="1590.0" y="390.0"></omgdi:waypoint> - <omgdi:waypoint x="1602.0" y="390.0"></omgdi:waypoint> - <omgdi:waypoint x="1602.0" y="400.0"></omgdi:waypoint> - <omgdi:waypoint x="1670.0" y="400.0"></omgdi:waypoint> + <omgdi:waypoint x="1590.0" y="310.0"/> + <omgdi:waypoint x="1602.0" y="310.0"/> + <omgdi:waypoint x="1602.0" y="320.0"/> + <omgdi:waypoint x="1670.0" y="320.0"/> </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge bpmnElement="createApproval2Reject" id="BPMNEdge_createApproval2Reject"> - <omgdi:waypoint x="510.0" y="576.0"></omgdi:waypoint> - <omgdi:waypoint x="522.0" y="576.0"></omgdi:waypoint> - <omgdi:waypoint x="522.0" y="689.0"></omgdi:waypoint> - <omgdi:waypoint x="560.0" y="689.0"></omgdi:waypoint> + <bpmndi:BPMNEdge bpmnElement="flow10" id="BPMNEdge_flow10"> + <omgdi:waypoint x="1590.0" y="130.0"/> + <omgdi:waypoint x="1602.0" y="130.0"/> + <omgdi:waypoint x="1602.0" y="150.0"/> + <omgdi:waypoint x="1640.0" y="150.0"/> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge bpmnElement="active2RequestPasswordReset" id="BPMNEdge_active2RequestPasswordReset"> + <omgdi:waypoint x="1439.5" y="540.5"/> + <omgdi:waypoint x="1593.209935088986" y="540.5"/> + <omgdi:waypoint x="1593.209935088986" y="512.6749142927692"/> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge bpmnElement="active2ConfirmPasswordReset" id="BPMNEdge_active2ConfirmPasswordReset"> + <omgdi:waypoint x="1439.5" y="540.5"/> + <omgdi:waypoint x="1608.797798366986" y="540.5"/> + <omgdi:waypoint x="1608.797798366986" y="561.167207412115"/> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge bpmnElement="deleteApprovalGW2Delete" id="BPMNEdge_deleteApprovalGW2Delete"> - <omgdi:waypoint x="1710.0" y="400.0"></omgdi:waypoint> - <omgdi:waypoint x="1752.0" y="400.0"></omgdi:waypoint> - <omgdi:waypoint x="1752.0" y="468.0"></omgdi:waypoint> - <omgdi:waypoint x="1940.0" y="468.0"></omgdi:waypoint> + <omgdi:waypoint x="1710.0" y="320.0"/> + <omgdi:waypoint x="1752.0" y="320.0"/> + <omgdi:waypoint x="1752.0" y="388.0"/> + <omgdi:waypoint x="1940.0" y="388.0"/> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge bpmnElement="createApproval2Reject" id="BPMNEdge_createApproval2Reject"> + <omgdi:waypoint x="510.0" y="576.0"/> + <omgdi:waypoint x="522.0" y="576.0"/> + <omgdi:waypoint x="522.0" y="689.0"/> + <omgdi:waypoint x="560.0" y="689.0"/> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge bpmnElement="active2Delete" id="BPMNEdge_active2Delete"> - <omgdi:waypoint x="1440.0" y="540.0"></omgdi:waypoint> - <omgdi:waypoint x="1452.0" y="540.0"></omgdi:waypoint> - <omgdi:waypoint x="1452.0" y="610.0"></omgdi:waypoint> - <omgdi:waypoint x="1990.0" y="498.0"></omgdi:waypoint> + <omgdi:waypoint x="1440.0" y="540.0"/> + <omgdi:waypoint x="1452.0" y="540.0"/> + <omgdi:waypoint x="1452.0" y="680.6812757582483"/> + <omgdi:waypoint x="1955.9214707261015" y="680.6812757582483"/> + <omgdi:waypoint x="1986.506931044467" y="418.0"/> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge bpmnElement="updateApprovalGW2Update" id="BPMNEdge_updateApprovalGW2Update"> - <omgdi:waypoint x="1710.0" y="640.0"></omgdi:waypoint> - <omgdi:waypoint x="1752.0" y="640.0"></omgdi:waypoint> - <omgdi:waypoint x="1752.0" y="610.0"></omgdi:waypoint> - <omgdi:waypoint x="1790.0" y="610.0"></omgdi:waypoint> + <omgdi:waypoint x="1710.0" y="760.0"/> + <omgdi:waypoint x="1752.0" y="760.0"/> + <omgdi:waypoint x="1752.0" y="730.0"/> + <omgdi:waypoint x="1790.0" y="730.0"/> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge bpmnElement="active2UpdateApproval" id="BPMNEdge_active2UpdateApproval"> - <omgdi:waypoint x="1440.0" y="540.0"></omgdi:waypoint> - <omgdi:waypoint x="1454.0" y="540.0"></omgdi:waypoint> - <omgdi:waypoint x="1454.0" y="650.0"></omgdi:waypoint> - <omgdi:waypoint x="1490.0" y="650.0"></omgdi:waypoint> + <omgdi:waypoint x="1440.0" y="540.0"/> + <omgdi:waypoint x="1454.0" y="540.0"/> + <omgdi:waypoint x="1454.0" y="770.0"/> + <omgdi:waypoint x="1490.0" y="770.0"/> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge bpmnElement="rejected2Delete" id="BPMNEdge_rejected2Delete"> - <omgdi:waypoint x="930.0" y="795.0"></omgdi:waypoint> - <omgdi:waypoint x="972.0" y="795.0"></omgdi:waypoint> - <omgdi:waypoint x="1470.0" y="911.0"></omgdi:waypoint> - <omgdi:waypoint x="1989.0" y="911.0"></omgdi:waypoint> - <omgdi:waypoint x="1990.0" y="498.0"></omgdi:waypoint> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge bpmnElement="updateApprovalGW2Reject" id="BPMNEdge_updateApprovalGW2Reject"> - <omgdi:waypoint x="1710.0" y="640.0"></omgdi:waypoint> - <omgdi:waypoint x="1752.0" y="640.0"></omgdi:waypoint> - <omgdi:waypoint x="1752.0" y="870.0"></omgdi:waypoint> - <omgdi:waypoint x="1790.0" y="870.0"></omgdi:waypoint> + <omgdi:waypoint x="930.0" y="795.0"/> + <omgdi:waypoint x="972.0" y="795.0"/> + <omgdi:waypoint x="1470.0" y="911.0"/> + <omgdi:waypoint x="1990.0" y="911.0"/> + <omgdi:waypoint x="1990.0" y="418.0"/> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge bpmnElement="createApprovalGW2Active" id="BPMNEdge_createApprovalGW2Active"> - <omgdi:waypoint x="630.0" y="449.0"></omgdi:waypoint> - <omgdi:waypoint x="674.0" y="449.0"></omgdi:waypoint> - <omgdi:waypoint x="674.0" y="540.0"></omgdi:waypoint> - <omgdi:waypoint x="1030.0" y="541.0"></omgdi:waypoint> + <omgdi:waypoint x="630.0" y="449.0"/> + <omgdi:waypoint x="674.0" y="449.0"/> + <omgdi:waypoint x="674.0" y="540.0"/> + <omgdi:waypoint x="1030.0" y="540.8768472906404"/> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge bpmnElement="updateApprovalGW2Reject" id="BPMNEdge_updateApprovalGW2Reject"> + <omgdi:waypoint x="1710.0" y="760.0"/> + <omgdi:waypoint x="1752.0" y="760.0"/> + <omgdi:waypoint x="1752.0" y="870.0"/> + <omgdi:waypoint x="1790.0" y="870.0"/> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge bpmnElement="flow8ter" id="BPMNEdge_flow8ter"> - <omgdi:waypoint x="1790.0" y="870.0"></omgdi:waypoint> - <omgdi:waypoint x="1778.0" y="882.0"></omgdi:waypoint> - <omgdi:waypoint x="1225.0" y="787.0"></omgdi:waypoint> - <omgdi:waypoint x="1080.0" y="726.0"></omgdi:waypoint> - <omgdi:waypoint x="1080.0" y="571.0"></omgdi:waypoint> + <omgdi:waypoint x="1790.0" y="879.6774193548387"/> + <omgdi:waypoint x="1778.0" y="882.0"/> + <omgdi:waypoint x="1225.0" y="787.0"/> + <omgdi:waypoint x="1080.0" y="726.0"/> + <omgdi:waypoint x="1080.0" y="571.0"/> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge bpmnElement="flow15" id="BPMNEdge_flow15"> + <omgdi:waypoint x="1643.209935088986" y="482.6749142927693"/> + <omgdi:waypoint x="1748.9712597675173" y="482.67491429276924"/> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge bpmnElement="suspended2Reactivate" id="BPMNEdge_suspended2Reactivate"> - <omgdi:waypoint x="1860.0" y="200.0"></omgdi:waypoint> - <omgdi:waypoint x="1902.0" y="200.0"></omgdi:waypoint> - <omgdi:waypoint x="1902.0" y="140.0"></omgdi:waypoint> - <omgdi:waypoint x="1940.0" y="140.0"></omgdi:waypoint> + <omgdi:waypoint x="1860.0" y="200.0"/> + <omgdi:waypoint x="1902.0" y="200.0"/> + <omgdi:waypoint x="1902.0" y="140.0"/> + <omgdi:waypoint x="1940.0" y="140.0"/> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge bpmnElement="flow13" id="BPMNEdge_flow13"> - <omgdi:waypoint x="660.0" y="689.0"></omgdi:waypoint> - <omgdi:waypoint x="672.0" y="689.0"></omgdi:waypoint> - <omgdi:waypoint x="672.0" y="800.0"></omgdi:waypoint> - <omgdi:waypoint x="710.0" y="800.0"></omgdi:waypoint> + <omgdi:waypoint x="660.0" y="689.0"/> + <omgdi:waypoint x="672.0" y="689.0"/> + <omgdi:waypoint x="672.0" y="800.0"/> + <omgdi:waypoint x="710.0" y="800.0"/> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge bpmnElement="flow14" id="BPMNEdge_flow14"> - <omgdi:waypoint x="810.0" y="800.0"></omgdi:waypoint> - <omgdi:waypoint x="822.0" y="787.0"></omgdi:waypoint> - <omgdi:waypoint x="822.0" y="795.0"></omgdi:waypoint> - <omgdi:waypoint x="890.0" y="795.0"></omgdi:waypoint> + <omgdi:waypoint x="760.0" y="770.0"/> + <omgdi:waypoint x="760.0" y="732.8074937730017"/> + <omgdi:waypoint x="910.0" y="732.8074937730017"/> + <omgdi:waypoint x="910.0" y="775.0"/> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge bpmnElement="createApprovalGW2EnableGW" id="BPMNEdge_createApprovalGW2EnableGW"> - <omgdi:waypoint x="510.0" y="576.0"></omgdi:waypoint> - <omgdi:waypoint x="522.0" y="576.0"></omgdi:waypoint> - <omgdi:waypoint x="522.0" y="449.0"></omgdi:waypoint> - <omgdi:waypoint x="590.0" y="449.0"></omgdi:waypoint> + <omgdi:waypoint x="510.0" y="576.0"/> + <omgdi:waypoint x="522.0" y="576.0"/> + <omgdi:waypoint x="522.0" y="449.0"/> + <omgdi:waypoint x="590.0" y="449.0"/> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge bpmnElement="active2Update" id="BPMNEdge_active2Update"> - <omgdi:waypoint x="1440.0" y="540.0"></omgdi:waypoint> - <omgdi:waypoint x="1456.0" y="540.0"></omgdi:waypoint> - <omgdi:waypoint x="1456.0" y="610.0"></omgdi:waypoint> - <omgdi:waypoint x="1790.0" y="610.0"></omgdi:waypoint> + <omgdi:waypoint x="1440.0" y="540.0"/> + <omgdi:waypoint x="1456.0" y="540.0"/> + <omgdi:waypoint x="1456.0" y="730.0"/> + <omgdi:waypoint x="1790.0" y="730.0"/> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge bpmnElement="create2Activate" id="BPMNEdge_create2Activate"> - <omgdi:waypoint x="270.0" y="526.0"></omgdi:waypoint> - <omgdi:waypoint x="282.0" y="526.0"></omgdi:waypoint> - <omgdi:waypoint x="282.0" y="449.0"></omgdi:waypoint> - <omgdi:waypoint x="590.0" y="449.0"></omgdi:waypoint> + <omgdi:waypoint x="270.0" y="526.0"/> + <omgdi:waypoint x="282.0" y="526.0"/> + <omgdi:waypoint x="282.0" y="449.0"/> + <omgdi:waypoint x="590.0" y="449.0"/> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge bpmnElement="active2Suspend" id="BPMNEdge_active2Suspend"> - <omgdi:waypoint x="1440.0" y="540.0"></omgdi:waypoint> - <omgdi:waypoint x="1452.0" y="540.0"></omgdi:waypoint> - <omgdi:waypoint x="1452.0" y="130.0"></omgdi:waypoint> - <omgdi:waypoint x="1490.0" y="130.0"></omgdi:waypoint> + <omgdi:waypoint x="1440.0" y="540.0"/> + <omgdi:waypoint x="1452.0" y="540.0"/> + <omgdi:waypoint x="1452.0" y="130.0"/> + <omgdi:waypoint x="1490.0" y="130.0"/> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge bpmnElement="suspended2Delete" id="BPMNEdge_suspended2Delete"> - <omgdi:waypoint x="1860.0" y="200.0"></omgdi:waypoint> - <omgdi:waypoint x="1902.0" y="200.0"></omgdi:waypoint> - <omgdi:waypoint x="1980.0" y="388.0"></omgdi:waypoint> - <omgdi:waypoint x="1990.0" y="438.0"></omgdi:waypoint> + <omgdi:waypoint x="1860.0" y="200.0"/> + <omgdi:waypoint x="1990.0" y="200.0"/> + <omgdi:waypoint x="1990.0" y="358.0"/> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge bpmnElement="created2Activate" id="BPMNEdge_created2Activate"> - <omgdi:waypoint x="1042.0" y="260.0"></omgdi:waypoint> - <omgdi:waypoint x="1054.0" y="260.0"></omgdi:waypoint> - <omgdi:waypoint x="1054.0" y="278.0"></omgdi:waypoint> - <omgdi:waypoint x="1092.0" y="278.0"></omgdi:waypoint> + <omgdi:waypoint x="1042.0" y="260.0"/> + <omgdi:waypoint x="1054.0" y="260.0"/> + <omgdi:waypoint x="1054.0" y="278.0"/> + <omgdi:waypoint x="1092.0" y="278.0"/> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge bpmnElement="createAsAnonymous2Approval" id="BPMNEdge_createAsAnonymous2Approval"> - <omgdi:waypoint x="270.0" y="526.0"></omgdi:waypoint> - <omgdi:waypoint x="282.0" y="526.0"></omgdi:waypoint> - <omgdi:waypoint x="282.0" y="590.0"></omgdi:waypoint> - <omgdi:waypoint x="320.0" y="590.0"></omgdi:waypoint> + <omgdi:waypoint x="270.0" y="526.0"/> + <omgdi:waypoint x="282.0" y="526.0"/> + <omgdi:waypoint x="282.0" y="590.0"/> + <omgdi:waypoint x="320.0" y="590.0"/> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge bpmnElement="flow3" id="BPMNEdge_flow3"> - <omgdi:waypoint x="420.0" y="590.0"></omgdi:waypoint> - <omgdi:waypoint x="432.0" y="590.0"></omgdi:waypoint> - <omgdi:waypoint x="432.0" y="576.0"></omgdi:waypoint> - <omgdi:waypoint x="470.0" y="576.0"></omgdi:waypoint> + <omgdi:waypoint x="420.0" y="590.0"/> + <omgdi:waypoint x="432.0" y="590.0"/> + <omgdi:waypoint x="432.0" y="576.0"/> + <omgdi:waypoint x="470.0" y="576.0"/> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge bpmnElement="flow2" id="BPMNEdge_flow2"> - <omgdi:waypoint x="180.0" y="527.0"></omgdi:waypoint> - <omgdi:waypoint x="192.0" y="527.0"></omgdi:waypoint> - <omgdi:waypoint x="192.0" y="526.0"></omgdi:waypoint> - <omgdi:waypoint x="230.0" y="526.0"></omgdi:waypoint> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge bpmnElement="flow5" id="BPMNEdge_flow5"> - <omgdi:waypoint x="802.0" y="218.0"></omgdi:waypoint> - <omgdi:waypoint x="814.0" y="218.0"></omgdi:waypoint> - <omgdi:waypoint x="814.0" y="243.0"></omgdi:waypoint> - <omgdi:waypoint x="852.0" y="243.0"></omgdi:waypoint> + <omgdi:waypoint x="180.0" y="527.0"/> + <omgdi:waypoint x="192.0" y="527.0"/> + <omgdi:waypoint x="192.0" y="526.0"/> + <omgdi:waypoint x="230.0" y="526.0"/> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge bpmnElement="rejected2Rejected" id="BPMNEdge_rejected2Rejected"> - <omgdi:waypoint x="890.0" y="795.0"></omgdi:waypoint> - <omgdi:waypoint x="848.0" y="795.0"></omgdi:waypoint> - <omgdi:waypoint x="848.0" y="800.0"></omgdi:waypoint> - <omgdi:waypoint x="810.0" y="800.0"></omgdi:waypoint> + <omgdi:waypoint x="890.6451612903226" y="795.6451612903226"/> + <omgdi:waypoint x="810.0" y="798.3333333333334"/> </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge bpmnElement="createApprovalGW2Suspended" id="BPMNEdge_createApprovalGW2Suspended"> - <omgdi:waypoint x="630.0" y="449.0"></omgdi:waypoint> - <omgdi:waypoint x="672.0" y="449.0"></omgdi:waypoint> - <omgdi:waypoint x="672.0" y="130.0"></omgdi:waypoint> - <omgdi:waypoint x="1490.0" y="130.0"></omgdi:waypoint> + <bpmndi:BPMNEdge bpmnElement="flow5" id="BPMNEdge_flow5"> + <omgdi:waypoint x="802.0" y="218.0"/> + <omgdi:waypoint x="814.0" y="218.0"/> + <omgdi:waypoint x="814.0" y="243.0"/> + <omgdi:waypoint x="852.0" y="243.0"/> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge bpmnElement="flow4" id="BPMNEdge_flow4"> - <omgdi:waypoint x="810.0" y="640.0"></omgdi:waypoint> - <omgdi:waypoint x="822.0" y="640.0"></omgdi:waypoint> - <omgdi:waypoint x="959.0" y="640.0"></omgdi:waypoint> - <omgdi:waypoint x="1080.0" y="571.0"></omgdi:waypoint> + <omgdi:waypoint x="810.0" y="640.0"/> + <omgdi:waypoint x="822.0" y="640.0"/> + <omgdi:waypoint x="959.0" y="640.0"/> + <omgdi:waypoint x="1043.3333333333333" y="571.0"/> </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge bpmnElement="createApprovalGW2OptIn" id="BPMNEdge_createApprovalGW2OptIn"> - <omgdi:waypoint x="630.0" y="449.0"></omgdi:waypoint> - <omgdi:waypoint x="674.0" y="449.0"></omgdi:waypoint> - <omgdi:waypoint x="700.0" y="449.0"></omgdi:waypoint> - <omgdi:waypoint x="752.0" y="248.0"></omgdi:waypoint> + <bpmndi:BPMNEdge bpmnElement="createApprovalGW2Suspended" id="BPMNEdge_createApprovalGW2Suspended"> + <omgdi:waypoint x="630.0" y="449.0"/> + <omgdi:waypoint x="672.0" y="449.0"/> + <omgdi:waypoint x="672.0" y="130.0"/> + <omgdi:waypoint x="1490.0" y="130.0"/> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge bpmnElement="flow14ter" id="BPMNEdge_flow14ter"> - <omgdi:waypoint x="1790.0" y="350.0"></omgdi:waypoint> - <omgdi:waypoint x="1778.0" y="337.0"></omgdi:waypoint> - <omgdi:waypoint x="1362.0" y="306.0"></omgdi:waypoint> - <omgdi:waypoint x="1080.0" y="511.0"></omgdi:waypoint> + <omgdi:waypoint x="1790.0" y="260.7608891486752"/> + <omgdi:waypoint x="1424.117736926915" y="193.1523534073587"/> + <omgdi:waypoint x="1109.678315230625" y="511.0"/> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge bpmnElement="createApprovalGW2OptIn" id="BPMNEdge_createApprovalGW2OptIn"> + <omgdi:waypoint x="630.0" y="449.0"/> + <omgdi:waypoint x="674.0" y="449.0"/> + <omgdi:waypoint x="700.0" y="449.0"/> + <omgdi:waypoint x="745.2467532467532" y="248.0"/> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge bpmnElement="flow1" id="BPMNEdge_flow1"> - <omgdi:waypoint x="35.0" y="529.0"></omgdi:waypoint> - <omgdi:waypoint x="80.0" y="527.0"></omgdi:waypoint> + <omgdi:waypoint x="30.0" y="527.0"/> + <omgdi:waypoint x="80.0" y="527.0"/> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge bpmnElement="flow16" id="BPMNEdge_flow16"> + <omgdi:waypoint x="1748.9712597675173" y="459.5470829510475"/> + <omgdi:waypoint x="1592.4096593525787" y="387.128477171313"/> + <omgdi:waypoint x="1130.0" y="525.9854974413342"/> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge bpmnElement="created2Created" id="BPMNEdge_created2Created"> - <omgdi:waypoint x="1002.0" y="260.0"></omgdi:waypoint> - <omgdi:waypoint x="990.0" y="260.0"></omgdi:waypoint> - <omgdi:waypoint x="990.0" y="243.0"></omgdi:waypoint> - <omgdi:waypoint x="952.0" y="243.0"></omgdi:waypoint> + <omgdi:waypoint x="1002.0" y="260.0"/> + <omgdi:waypoint x="990.0" y="260.0"/> + <omgdi:waypoint x="990.0" y="243.0"/> + <omgdi:waypoint x="952.0" y="243.0"/> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge bpmnElement="flow18" id="BPMNEdge_flow18"> + <omgdi:waypoint x="1748.971259767517" y="619.7464352880323"/> + <omgdi:waypoint x="1673.525420205687" y="662.8701121105813"/> + <omgdi:waypoint x="1130.0" y="551.266629529393"/> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge bpmnElement="createApprovalGW2Activate" id="BPMNEdge_createApprovalGW2Activate"> - <omgdi:waypoint x="630.0" y="449.0"></omgdi:waypoint> - <omgdi:waypoint x="672.0" y="449.0"></omgdi:waypoint> - <omgdi:waypoint x="672.0" y="640.0"></omgdi:waypoint> - <omgdi:waypoint x="710.0" y="640.0"></omgdi:waypoint> + <omgdi:waypoint x="630.0" y="449.0"/> + <omgdi:waypoint x="672.0" y="449.0"/> + <omgdi:waypoint x="672.0" y="640.0"/> + <omgdi:waypoint x="710.0" y="640.0"/> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge bpmnElement="flow7" id="BPMNEdge_flow7"> - <omgdi:waypoint x="1142.0" y="308.0"></omgdi:waypoint> - <omgdi:waypoint x="1080.0" y="511.0"></omgdi:waypoint> + <omgdi:waypoint x="1134.9277566539924" y="308.0"/> + <omgdi:waypoint x="1087.0722433460076" y="511.0"/> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge bpmnElement="flow6" id="BPMNEdge_flow6"> - <omgdi:waypoint x="952.0" y="243.0"></omgdi:waypoint> - <omgdi:waypoint x="964.0" y="255.0"></omgdi:waypoint> - <omgdi:waypoint x="964.0" y="260.0"></omgdi:waypoint> - <omgdi:waypoint x="1002.0" y="260.0"></omgdi:waypoint> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge bpmnElement="flow8bis" id="BPMNEdge_flow8bis"> - <omgdi:waypoint x="1590.0" y="650.0"></omgdi:waypoint> - <omgdi:waypoint x="1602.0" y="650.0"></omgdi:waypoint> - <omgdi:waypoint x="1602.0" y="640.0"></omgdi:waypoint> - <omgdi:waypoint x="1670.0" y="640.0"></omgdi:waypoint> + <omgdi:waypoint x="952.0" y="252.67741935483872"/> + <omgdi:waypoint x="964.0" y="255.0"/> + <omgdi:waypoint x="964.0" y="260.0"/> + <omgdi:waypoint x="1002.0" y="260.0"/> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge bpmnElement="flow9" id="BPMNEdge_flow9"> - <omgdi:waypoint x="1840.0" y="640.0"></omgdi:waypoint> - <omgdi:waypoint x="1797.0" y="775.0"></omgdi:waypoint> - <omgdi:waypoint x="1465.0" y="775.0"></omgdi:waypoint> - <omgdi:waypoint x="1080.0" y="571.0"></omgdi:waypoint> + <omgdi:waypoint x="1828.6246202240113" y="760.0"/> + <omgdi:waypoint x="1811.88836468294" y="804.1381014189917"/> + <omgdi:waypoint x="1474.4398193359375" y="804.1381014189917"/> + <omgdi:waypoint x="1124.969521769241" y="571.0"/> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge bpmnElement="deleteApprovalGW2Reject" id="BPMNEdge_deleteApprovalGW2Reject"> - <omgdi:waypoint x="1710.0" y="400.0"></omgdi:waypoint> - <omgdi:waypoint x="1752.0" y="400.0"></omgdi:waypoint> - <omgdi:waypoint x="1752.0" y="350.0"></omgdi:waypoint> - <omgdi:waypoint x="1790.0" y="350.0"></omgdi:waypoint> + <omgdi:waypoint x="1710.0" y="320.0"/> + <omgdi:waypoint x="1752.0" y="320.0"/> + <omgdi:waypoint x="1752.0" y="270.0"/> + <omgdi:waypoint x="1790.0" y="270.0"/> </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge bpmnElement="flow8" id="BPMNEdge_flow8"> - <omgdi:waypoint x="1130.0" y="541.0"></omgdi:waypoint> - <omgdi:waypoint x="1400.0" y="540.0"></omgdi:waypoint> + <bpmndi:BPMNEdge bpmnElement="flow8bis" id="BPMNEdge_flow8bis"> + <omgdi:waypoint x="1590.0" y="770.0"/> + <omgdi:waypoint x="1602.0" y="770.0"/> + <omgdi:waypoint x="1602.0" y="760.0"/> + <omgdi:waypoint x="1670.0" y="760.0"/> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge bpmnElement="flow99" id="BPMNEdge_flow99"> - <omgdi:waypoint x="2040.0" y="468.0"></omgdi:waypoint> - <omgdi:waypoint x="2080.0" y="468.0"></omgdi:waypoint> + <omgdi:waypoint x="2040.0" y="388.0"/> + <omgdi:waypoint x="2078.1893792531678" y="388.0"/> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge bpmnElement="flow8" id="BPMNEdge_flow8"> + <omgdi:waypoint x="1130.0" y="540.8529411764706"/> + <omgdi:waypoint x="1400.058651026393" y="540.0586510263929"/> </bpmndi:BPMNEdge> </bpmndi:BPMNPlane> </bpmndi:BPMNDiagram> Modified: syncope/trunk/pom.xml URL: http://svn.apache.org/viewvc/syncope/trunk/pom.xml?rev=1626150&r1=1626149&r2=1626150&view=diff ============================================================================== --- syncope/trunk/pom.xml (original) +++ syncope/trunk/pom.xml Fri Sep 19 08:58:36 2014 @@ -726,6 +726,11 @@ under the License. <artifactId>jackson-jaxrs-json-provider</artifactId> <version>${jackson.version}</version> </dependency> + <dependency> + <groupId>com.fasterxml.jackson.module</groupId> + <artifactId>jackson-module-afterburner</artifactId> + <version>${jackson.version}</version> + </dependency> <dependency> <groupId>org.quartz-scheduler</groupId>
