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( <actorName> )</b> : </li>
16 * <li><b>user( <userName> )</b> : </li>
17 * <li><b>group( <groupName> )</b> : </li>
18 * </ul>
19 * </p>
20 * <p>For the nextArgument's, following constructions are valid :
21 * <ul>
22 * <li><b>[User]->group( <membership-type> )</b> results in a Group</li>
23 * <li><b>[Group]->role( <role> )</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 }