syncope-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From conflue...@apache.org
Subject [CONF] Apache Syncope > Default Workflow
Date Wed, 10 Oct 2012 17:07:00 GMT
<html>
<head>
    <base href="https://cwiki.apache.org/confluence">
            <link rel="stylesheet" href="/confluence/s/2042/9/3/_/styles/combined.css?spaceKey=SYNCOPE&amp;forWysiwyg=true"
type="text/css">
    </head>
<body style="background: white;" bgcolor="white" class="email-body">
<div id="pageContent">
<div id="notificationFormat">
<div class="wiki-content">
<div class="email">
    <h2><a href="https://cwiki.apache.org/confluence/display/SYNCOPE/Default+Workflow">Default
Workflow</a></h2>
    <h4>Page  <b>added</b> by             <a href="https://cwiki.apache.org/confluence/display/~jbernhardt">Jan
Bernhardt</a>
    </h4>
         <br/>
    <div class="notificationGreySide">
         <p>The following workflow will be delivered by default when you create your
own Syncope instance.</p>

<p><span class="error">Unable to render embedded object: File (Workflow2.png)
not found.</span></p>

<p>Yellow processes represent (Java) service tasks, whereas green and blue highlighted
processes are waiting for a user interaction.</p>

<p>The default workflow supports user approval for self registered users, as well as
a token validation. Active users can be updated, whereas suspended (inactive) users can only
be deleted or reactivated. <br/>
To achieve any other behavior you need to modify your <a href="https://cwiki.apache.org/confluence/display/SYNCOPE/Customize+the+workflow+definition"
class="external-link" rel="nofollow">workflow definition</a>. By doing this you can
for example easily disable auto activation for new users, or call your own service task implementation.</p>

<div class="code panel" style="border-width: 1px;"><div class="codeHeader panelHeader"
style="border-bottom-width: 1px;"><b>Default Workflow BPMN Definition</b></div><div
class="codeContent panelContent">
<pre class="code-xml"><span class="code-tag">&lt;?xml version=<span class="code-quote">"1.0"</span>
encoding=<span class="code-quote">"UTF-8"</span>?&gt;</span>
&lt;!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements.  See the NOTICE file
distributed with this work for additional information
regarding copyright ownership.  The ASF licenses this file
to you under the Apache License, Version 2.0 (the
<span class="code-quote">"License"</span>); you may not use this file except in
compliance
with the License.  You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
<span class="code-quote">"AS IS"</span> BASIS, WITHOUT WARRANTIES OR CONDITIONS
OF ANY
KIND, either express or implied.  See the License for the
specific language governing permissions and limitations
under the License.
--&gt;
&lt;definitions id=<span class="code-quote">"definitions"</span>
             targetNamespace=<span class="code-quote">"http://activiti.org/bpmn20"</span>

             xmlns=<span class="code-quote">"http://www.omg.org/spec/BPMN/20100524/MODEL"</span>
             <span class="code-keyword">xmlns:xsi</span>=<span class="code-quote">"http://www.w3.org/2001/XMLSchema-instance"</span>
             <span class="code-keyword">xmlns:activiti</span>=<span class="code-quote">"http://activiti.org/bpmn"</span>
             <span class="code-keyword">xmlns:bpmndi</span>=<span class="code-quote">"http://www.omg.org/spec/BPMN/20100524/DI"</span>

             <span class="code-keyword">xmlns:omgdc</span>=<span class="code-quote">"http://www.omg.org/spec/DD/20100524/DC"</span>
             <span class="code-keyword">xmlns:omgdi</span>=<span class="code-quote">"http://www.omg.org/spec/DD/20100524/DI"</span>

             xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL 
                                 http://www.omg.org/spec/BPMN/2.0/20100501/BPMN20.xsd"&gt;
  
  <span class="code-tag">&lt;process id=<span class="code-quote">"userWorkflow"</span>
name=<span class="code-quote">"User Workflow"</span>&gt;</span>
  
    <span class="code-tag">&lt;startEvent id=<span class="code-quote">"theStart"</span>/&gt;</span>
    
    <span class="code-tag"><span class="code-comment">&lt;!-- Create an user
--&gt;</span></span>
    <span class="code-tag">&lt;sequenceFlow id=<span class="code-quote">"flow1"</span>
sourceRef=<span class="code-quote">"theStart"</span> targetRef=<span class="code-quote">"createUser"</span>/&gt;</span>
      
    <span class="code-tag">&lt;serviceTask id=<span class="code-quote">"createUser"</span>
name=<span class="code-quote">"Create user"</span> activiti:class=<span class="code-quote">"org.apache.syncope.core.workflow.activiti.Create"</span>/&gt;</span>

    <span class="code-tag">&lt;sequenceFlow id=<span class="code-quote">"flow2"</span>
sourceRef=<span class="code-quote">"createUser"</span> targetRef=<span class="code-quote">"approvalRequiredGW"</span>/&gt;</span>
        
    <span class="code-tag">&lt;exclusiveGateway id=<span class="code-quote">"approvalRequiredGW"</span>/&gt;</span>
    <span class="code-tag">&lt;sequenceFlow id=<span class="code-quote">"create2Activate"</span>
sourceRef=<span class="code-quote">"approvalRequiredGW"</span> targetRef=<span
class="code-quote">"tokenRequiredGW"</span>&gt;</span>
      <span class="code-tag">&lt;conditionExpression xsi:type=<span class="code-quote">"tFormalExpression"</span>&gt;</span>${!syncopeUser.getRoleIds().contains(9)}<span
class="code-tag">&lt;/conditionExpression&gt;</span>
    <span class="code-tag">&lt;/sequenceFlow&gt;</span>
    <span class="code-tag">&lt;sequenceFlow id=<span class="code-quote">"create2userApproval"</span>
sourceRef=<span class="code-quote">"approvalRequiredGW"</span> targetRef=<span
class="code-quote">"createApproval"</span>&gt;</span>
      <span class="code-tag">&lt;conditionExpression xsi:type=<span class="code-quote">"tFormalExpression"</span>&gt;</span>${syncopeUser.getRoleIds().contains(9)}<span
class="code-tag">&lt;/conditionExpression&gt;</span>
    <span class="code-tag">&lt;/sequenceFlow&gt;</span>
        
    <span class="code-tag">&lt;userTask id=<span class="code-quote">"createApproval"</span>
activiti:formKey=<span class="code-quote">"userApproval"</span> name=<span
class="code-quote">"User approval"</span> activiti:candidateGroups=<span class="code-quote">"7"</span>&gt;</span>
      <span class="code-tag">&lt;extensionElements&gt;</span>
        <span class="code-tag">&lt;activiti:formProperty id=<span class="code-quote">"username"</span>
name=<span class="code-quote">"Username"</span> type=<span class="code-quote">"string"</span>
writable=<span class="code-quote">"false"</span> expression=<span class="code-quote">"${syncopeUser.username}"</span>/&gt;</span>
        <span class="code-tag">&lt;activiti:formProperty id=<span class="code-quote">"approve"</span>
variable=<span class="code-quote">"approve"</span> name=<span class="code-quote">"Approve?"</span>
type=<span class="code-quote">"boolean"</span> required=<span class="code-quote">"true"</span>/&gt;</span>
        <span class="code-tag">&lt;activiti:formProperty id=<span class="code-quote">"rejectUserReason"</span>
variable=<span class="code-quote">"rejectUserReason"</span> name=<span class="code-quote">"Reason
for rejectUsering"</span> type=<span class="code-quote">"string"</span>/&gt;</span>
      <span class="code-tag">&lt;/extensionElements&gt;</span>
    <span class="code-tag">&lt;/userTask&gt;</span>

    <span class="code-tag">&lt;sequenceFlow id=<span class="code-quote">"flow3"</span>
sourceRef=<span class="code-quote">"createApproval"</span> targetRef=<span
class="code-quote">"userapprovalRequiredGW"</span>/&gt;</span>
        
    <span class="code-tag">&lt;exclusiveGateway id=<span class="code-quote">"userapprovalRequiredGW"</span>/&gt;</span>
    <span class="code-tag">&lt;sequenceFlow id=<span class="code-quote">"userapprovalRequiredGW2tokenRequiredGW"</span>
sourceRef=<span class="code-quote">"userapprovalRequiredGW"</span> targetRef=<span
class="code-quote">"tokenRequiredGW"</span>&gt;</span>
      <span class="code-tag">&lt;conditionExpression xsi:type=<span class="code-quote">"tFormalExpression"</span>&gt;</span>${approve}<span
class="code-tag">&lt;/conditionExpression&gt;</span>
    <span class="code-tag">&lt;/sequenceFlow&gt;</span>
    <span class="code-tag">&lt;sequenceFlow id=<span class="code-quote">"userApproval2rejectUser"</span>
sourceRef=<span class="code-quote">"userapprovalRequiredGW"</span> targetRef=<span
class="code-quote">"rejectUser"</span>&gt;</span>
      <span class="code-tag">&lt;conditionExpression xsi:type=<span class="code-quote">"tFormalExpression"</span>&gt;</span>${!approve}<span
class="code-tag">&lt;/conditionExpression&gt;</span>
    <span class="code-tag">&lt;/sequenceFlow&gt;</span>
    
    <span class="code-tag">&lt;exclusiveGateway id=<span class="code-quote">"tokenRequiredGW"</span>/&gt;</span>
    <span class="code-tag"><span class="code-comment">&lt;!-- opt-in required
--&gt;</span></span>
    <span class="code-tag">&lt;sequenceFlow id=<span class="code-quote">"userTokenRequired"</span>
sourceRef=<span class="code-quote">"tokenRequiredGW"</span> targetRef=<span
class="code-quote">"generateUserConfirmationToken"</span>&gt;</span>
      <span class="code-tag">&lt;conditionExpression xsi:type=<span class="code-quote">"tFormalExpression"</span>&gt;</span>${syncopeUser.getRoleIds().contains(11)}<span
class="code-tag">&lt;/conditionExpression&gt;</span>
    <span class="code-tag">&lt;/sequenceFlow&gt;</span>
	<span class="code-tag">&lt;sequenceFlow id=<span class="code-quote">"userTokenNotRequired"</span>
sourceRef=<span class="code-quote">"tokenRequiredGW"</span> targetRef=<span
class="code-quote">"userActiveGW"</span>&gt;</span>
      <span class="code-tag">&lt;conditionExpression xsi:type=<span class="code-quote">"tFormalExpression"</span>&gt;</span>${!syncopeUser.getRoleIds().contains(11)}<span
class="code-tag">&lt;/conditionExpression&gt;</span>
    <span class="code-tag">&lt;/sequenceFlow&gt;</span>
	
	<span class="code-tag">&lt;exclusiveGateway id=<span class="code-quote">"userActiveGW"</span>/&gt;</span>
    <span class="code-tag"><span class="code-comment">&lt;!-- activate user
if suspension is not required --&gt;</span></span>
    <span class="code-tag">&lt;sequenceFlow id=<span class="code-quote">"userapprovalRequiredGW2Activate"</span>
sourceRef=<span class="code-quote">"userActiveGW"</span> targetRef=<span class="code-quote">"activateUser"</span>&gt;</span>
      <span class="code-tag">&lt;conditionExpression xsi:type=<span class="code-quote">"tFormalExpression"</span>&gt;</span>${enabled==null}<span
class="code-tag">&lt;/conditionExpression&gt;</span>
    <span class="code-tag">&lt;/sequenceFlow&gt;</span>
    <span class="code-tag">&lt;sequenceFlow id=<span class="code-quote">"userapprovalRequiredGW2Active"</span>
sourceRef=<span class="code-quote">"userActiveGW"</span> targetRef=<span class="code-quote">"active"</span>&gt;</span>
      <span class="code-tag">&lt;conditionExpression xsi:type=<span class="code-quote">"tFormalExpression"</span>&gt;</span>${enabled}<span
class="code-tag">&lt;/conditionExpression&gt;</span>
    <span class="code-tag">&lt;/sequenceFlow&gt;</span>
    <span class="code-tag">&lt;sequenceFlow id=<span class="code-quote">"userapprovalRequiredGW2Suspended"</span>
sourceRef=<span class="code-quote">"userActiveGW"</span> targetRef=<span class="code-quote">"suspendUser"</span>&gt;</span>
      <span class="code-tag">&lt;conditionExpression xsi:type=<span class="code-quote">"tFormalExpression"</span>&gt;</span>${!enabled}<span
class="code-tag">&lt;/conditionExpression&gt;</span>
    <span class="code-tag">&lt;/sequenceFlow&gt;</span>
    
    <span class="code-tag">&lt;serviceTask id=<span class="code-quote">"activateUser"</span>
name=<span class="code-quote">"activateUser"</span> activiti:class=<span class="code-quote">"org.apache.syncope.core.workflow.activiti.AutoActivate"</span>/&gt;</span>
    <span class="code-tag">&lt;sequenceFlow id=<span class="code-quote">"flow4"</span>
sourceRef=<span class="code-quote">"activateUser"</span> targetRef=<span class="code-quote">"active"</span>/&gt;</span>

    <span class="code-tag"><span class="code-comment">&lt;!-- Double opt-in
required --&gt;</span></span>
    &lt;serviceTask id=<span class="code-quote">"generateUserConfirmationToken"</span>
name=<span class="code-quote">"Generate token"</span> 
                 activiti:class=<span class="code-quote">"org.apache.syncope.core.workflow.activiti.GenerateToken"</span>/&gt;
        
    <span class="code-tag">&lt;sequenceFlow id=<span class="code-quote">"flow5"</span>
sourceRef=<span class="code-quote">"generateUserConfirmationToken"</span> targetRef=<span
class="code-quote">"created"</span>/&gt;</span>

    <span class="code-tag">&lt;userTask id=<span class="code-quote">"created"</span>
name=<span class="code-quote">"provideUserConfirmationToken"</span>/&gt;</span>

    <span class="code-tag">&lt;sequenceFlow id=<span class="code-quote">"flow6"</span>
sourceRef=<span class="code-quote">"created"</span> targetRef=<span class="code-quote">"tokenValidationGW"</span>/&gt;</span>

    <span class="code-tag">&lt;exclusiveGateway id=<span class="code-quote">"tokenValidationGW"</span>/&gt;</span>
    <span class="code-tag">&lt;sequenceFlow id=<span class="code-quote">"provideUserConfirmationToken2removeUserConfirmationToken"</span>
sourceRef=<span class="code-quote">"tokenValidationGW"</span> targetRef=<span
class="code-quote">"removeUserConfirmationToken"</span>&gt;</span>
      <span class="code-tag">&lt;conditionExpression xsi:type=<span class="code-quote">"tFormalExpression"</span>&gt;</span>${syncopeUser.checkToken(token)}<span
class="code-tag">&lt;/conditionExpression&gt;</span>
    <span class="code-tag">&lt;/sequenceFlow&gt;</span>  
    <span class="code-tag">&lt;sequenceFlow id=<span class="code-quote">"provideUserConfirmationToken2provideUserConfirmationToken"</span>
sourceRef=<span class="code-quote">"tokenValidationGW"</span> targetRef=<span
class="code-quote">"created"</span>&gt;</span>
      <span class="code-tag">&lt;conditionExpression xsi:type=<span class="code-quote">"tFormalExpression"</span>&gt;</span>${!syncopeUser.checkToken(token)}<span
class="code-tag">&lt;/conditionExpression&gt;</span>
    <span class="code-tag">&lt;/sequenceFlow&gt;</span>
        
    <span class="code-tag">&lt;scriptTask id=<span class="code-quote">"removeUserConfirmationToken"</span>
name=<span class="code-quote">"Remove Token and activateUser"</span> scriptFormat=<span
class="code-quote">"groovy"</span>&gt;</span>
      <span class="code-tag">&lt;script&gt;</span>
        syncopeUser.removeToken()    
      <span class="code-tag">&lt;/script&gt;</span>
    <span class="code-tag">&lt;/scriptTask&gt;</span>

    <span class="code-tag">&lt;sequenceFlow id=<span class="code-quote">"flow7"</span>
sourceRef=<span class="code-quote">"removeUserConfirmationToken"</span> targetRef=<span
class="code-quote">"active"</span>/&gt;</span>
    
    <span class="code-tag">&lt;userTask id=<span class="code-quote">"active"</span>
name=<span class="code-quote">"userActive"</span>/&gt;</span>
        
    <span class="code-tag">&lt;sequenceFlow id=<span class="code-quote">"flow8"</span>
sourceRef=<span class="code-quote">"active"</span> targetRef=<span class="code-quote">"suspendUserGw"</span>/&gt;</span>

	<span class="code-tag">&lt;exclusiveGateway id=<span class="code-quote">"suspendUserGw"</span>/&gt;</span>
    <span class="code-tag">&lt;sequenceFlow id=<span class="code-quote">"userActive2modifyUserGW"</span>
sourceRef=<span class="code-quote">"suspendUserGw"</span> targetRef=<span class="code-quote">"modifyUserGW"</span>&gt;</span>
      <span class="code-tag">&lt;conditionExpression xsi:type=<span class="code-quote">"tFormalExpression"</span>&gt;</span>${task
!= 'suspend'}<span class="code-tag">&lt;/conditionExpression&gt;</span>
    <span class="code-tag">&lt;/sequenceFlow&gt;</span>  
    <span class="code-tag">&lt;sequenceFlow id=<span class="code-quote">"userActive2suspendUser"</span>
sourceRef=<span class="code-quote">"suspendUserGw"</span> targetRef=<span class="code-quote">"suspendUser"</span>&gt;</span>
      <span class="code-tag">&lt;conditionExpression xsi:type=<span class="code-quote">"tFormalExpression"</span>&gt;</span>${task
== 'suspend'}<span class="code-tag">&lt;/conditionExpression&gt;</span>
    <span class="code-tag">&lt;/sequenceFlow&gt;</span> 
	
    <span class="code-tag">&lt;exclusiveGateway id=<span class="code-quote">"modifyUserGW"</span>/&gt;</span>
    <span class="code-tag">&lt;sequenceFlow id=<span class="code-quote">"active2updateUser"</span>
sourceRef=<span class="code-quote">"modifyUserGW"</span> targetRef=<span class="code-quote">"updateUser"</span>&gt;</span>
      <span class="code-tag">&lt;conditionExpression xsi:type=<span class="code-quote">"tFormalExpression"</span>&gt;</span>${task
== 'update'}<span class="code-tag">&lt;/conditionExpression&gt;</span>
    <span class="code-tag">&lt;/sequenceFlow&gt;</span>  
    <span class="code-tag">&lt;sequenceFlow id=<span class="code-quote">"active2deleteUser"</span>
sourceRef=<span class="code-quote">"modifyUserGW"</span> targetRef=<span class="code-quote">"deleteUser"</span>&gt;</span>
      <span class="code-tag">&lt;conditionExpression xsi:type=<span class="code-quote">"tFormalExpression"</span>&gt;</span>${task
== 'delete'}<span class="code-tag">&lt;/conditionExpression&gt;</span>
    <span class="code-tag">&lt;/sequenceFlow&gt;</span>

    <span class="code-tag"><span class="code-comment">&lt;!-- Update an active
user --&gt;</span></span>
    <span class="code-tag">&lt;serviceTask id=<span class="code-quote">"updateUser"</span>
name=<span class="code-quote">"updateUser"</span> activiti:class=<span class="code-quote">"org.apache.syncope.core.workflow.activiti.Update"</span>/&gt;</span>

    <span class="code-tag">&lt;sequenceFlow id=<span class="code-quote">"flow9"</span>
sourceRef=<span class="code-quote">"updateUser"</span> targetRef=<span class="code-quote">"userActiveGW"</span>/&gt;</span>

    <span class="code-tag"><span class="code-comment">&lt;!-- suspendUser
an active user --&gt;</span></span>
    <span class="code-tag">&lt;serviceTask id=<span class="code-quote">"suspendUser"</span>
name=<span class="code-quote">"suspendUser"</span> activiti:class=<span class="code-quote">"org.apache.syncope.core.workflow.activiti.Suspend"</span>/&gt;</span>

    <span class="code-tag">&lt;sequenceFlow id=<span class="code-quote">"flow10"</span>
sourceRef=<span class="code-quote">"suspendUser"</span> targetRef=<span class="code-quote">"suspended"</span>/&gt;</span>

    <span class="code-tag">&lt;userTask id=<span class="code-quote">"suspended"</span>
name=<span class="code-quote">"UserSuspended"</span>/&gt;</span>
        
    <span class="code-tag">&lt;sequenceFlow id=<span class="code-quote">"flow11"</span>
sourceRef=<span class="code-quote">"suspended"</span> targetRef=<span class="code-quote">"reactivateUserGW"</span>/&gt;</span>

    <span class="code-tag">&lt;exclusiveGateway id=<span class="code-quote">"reactivateUserGW"</span>/&gt;</span>
    <span class="code-tag">&lt;sequenceFlow id=<span class="code-quote">"suspended2reactivate"</span>
sourceRef=<span class="code-quote">"reactivateUserGW"</span> targetRef=<span
class="code-quote">"reactivateUser"</span>&gt;</span>
      <span class="code-tag">&lt;conditionExpression xsi:type=<span class="code-quote">"tFormalExpression"</span>&gt;</span>${task
== 'reactivate'}<span class="code-tag">&lt;/conditionExpression&gt;</span>
    <span class="code-tag">&lt;/sequenceFlow&gt;</span>
    <span class="code-tag">&lt;sequenceFlow id=<span class="code-quote">"suspended2modify"</span>
sourceRef=<span class="code-quote">"reactivateUserGW"</span> targetRef=<span
class="code-quote">"modifyUserGW"</span>&gt;</span>
      <span class="code-tag">&lt;conditionExpression xsi:type=<span class="code-quote">"tFormalExpression"</span>&gt;</span>${task
!= 'reactivate'}<span class="code-tag">&lt;/conditionExpression&gt;</span>
    <span class="code-tag">&lt;/sequenceFlow&gt;</span>

    <span class="code-tag"><span class="code-comment">&lt;!-- Reactivate a
suspended user --&gt;</span></span>
    <span class="code-tag">&lt;serviceTask id=<span class="code-quote">"reactivateUser"</span>
name =<span class="code-quote">"reactivateUser"</span> activiti:class=<span
class="code-quote">"org.apache.syncope.core.workflow.activiti.Reactivate"</span>/&gt;</span>

    <span class="code-tag">&lt;sequenceFlow id=<span class="code-quote">"flow12"</span>
sourceRef=<span class="code-quote">"reactivateUser"</span> targetRef=<span
class="code-quote">"active"</span>/&gt;</span>
        
    <span class="code-tag"><span class="code-comment">&lt;!-- rejectUser an
user --&gt;</span></span>
    <span class="code-tag">&lt;scriptTask id=<span class="code-quote">"rejectUser"</span>
name=<span class="code-quote">"rejectUser"</span> scriptFormat=<span class="code-quote">"groovy"</span>&gt;</span>
      <span class="code-tag"><span class="code-comment">&lt;!-- Do something
with rejectUserReason --&gt;</span></span>
      <span class="code-tag">&lt;script&gt;</span>
        def scriptVar = rejectUserReason
      <span class="code-tag">&lt;/script&gt;</span>
    <span class="code-tag">&lt;/scriptTask&gt;</span>
        
    <span class="code-tag">&lt;sequenceFlow id=<span class="code-quote">"flow13"</span>
sourceRef=<span class="code-quote">"rejectUser"</span> targetRef=<span class="code-quote">"rejectedUser"</span>/&gt;</span>

    <span class="code-tag">&lt;userTask id=<span class="code-quote">"rejectedUser"</span>
name=<span class="code-quote">"rejectedUser"</span>/&gt;</span>
        
    <span class="code-tag">&lt;sequenceFlow id=<span class="code-quote">"flow14"</span>
sourceRef=<span class="code-quote">"rejectedUser"</span> targetRef=<span class="code-quote">"deleteUser"</span>/&gt;</span>

    <span class="code-tag"><span class="code-comment">&lt;!-- Delete an user
(provideUserConfirmationToken, active or suspended) --&gt;</span></span>
    <span class="code-tag">&lt;serviceTask id=<span class="code-quote">"deleteUser"</span>
name=<span class="code-quote">"deleteUser"</span> activiti:class=<span class="code-quote">"org.apache.syncope.core.workflow.activiti.Delete"</span>/&gt;</span>

    <span class="code-tag">&lt;sequenceFlow id=<span class="code-quote">"flow99"</span>
sourceRef=<span class="code-quote">"deleteUser"</span> targetRef=<span class="code-quote">"theEnd"</span>/&gt;</span>

    <span class="code-tag">&lt;endEvent id=<span class="code-quote">"theEnd"</span>/&gt;</span>
      
  <span class="code-tag">&lt;/process&gt;</span>
  
<span class="code-tag">&lt;/definitions&gt;</span></pre>
</div></div>
    </div>
    <div id="commentsSection" class="wiki-content pageSection">
       <div style="float: right;">
            <a href="https://cwiki.apache.org/confluence/users/viewnotifications.action"
class="grey">Change Notification Preferences</a>
       </div>
       <a href="https://cwiki.apache.org/confluence/display/SYNCOPE/Default+Workflow">View
Online</a>
              |
       <a href="https://cwiki.apache.org/confluence/display/SYNCOPE/Default+Workflow?showComments=true&amp;showCommentArea=true#addcomment">Add
Comment</a>
           </div>
</div>
</div>
</div>
</div>
</body>
</html>

Mime
View raw message