Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

Source code: org/jbpm/workflow/delegation/impl/assignment/AssignmentExpressionResolver.java


1   package org.jbpm.workflow.delegation.impl.assignment;
2   
3   import org.apache.log4j.*;
4   import org.jbpm.workflow.organisation.*;
5   import org.jbpm.workflow.delegation.*;
6   import org.jbpm.workflow.delegation.impl.*;
7   
8   /**
9    * allows to specify the next-actor in a process definition as an expression using the following syntax.
10   * <p>The general syntax is firstArgument->nextArgument->nextArgument->...->nextArgument
11   * </p> 
12   * <p>For the firstArgument, following constructions are valid :
13   * <ul>
14   *   <li><b>previousActor</b> : </li>
15   *   <li><b>actor( &lt;actorName&gt; )</b> : </li>
16   *   <li><b>user( &lt;userName&gt; )</b> : </li>
17   *   <li><b>group( &lt;groupName&gt; )</b> : </li>
18   * </ul>
19   * </p> 
20   * <p>For the nextArgument's, following constructions are valid :
21   * <ul>
22   *   <li><b>[User]->group( &lt;membership-type&gt; )</b> results in a Group</li>
23   *   <li><b>[Group]->role( &lt;role&gt; )</b> results in a User</li>
24   *   <li><b>[Group]->parentGroup</b> results in a Group</li>
25   * </ul>
26   * </p> 
27   * @author Tom Baeyens
28   */
29  public class AssignmentExpressionResolver implements AssignmentHandler {
30    
31    public String selectActor( AssignmentContext assignmentContext ) {
32      String actorId = null;
33  
34      String expression = (String) assignmentContext.getConfiguration().get( "expression" );
35      
36      try {
37        Actor actor = actorExpressionResolver.resolveArgument(expression, assignmentContext);
38        if ( actor != null ) {
39          actorId = actor.getId(); 
40        }
41      } catch (Exception e) {
42        e.printStackTrace();
43        throw new RuntimeException( e.getMessage() );
44      }
45  
46      return actorId; 
47    }
48  
49    private ActorExpressionResolver actorExpressionResolver = ActorExpressionResolver.getInstance(); 
50    private static Logger log = Logger.getLogger( AssignmentExpressionResolver.class );
51  }