[jbpm-commits] JBoss JBPM SVN: r5360 - projects/gwt-console/trunk/server/server-core/src/main/java/org/jboss/bpm/console/server.
do-not-reply at jboss.org
do-not-reply at jboss.org
Tue Jul 28 08:58:30 EDT 2009
Author: heiko.braun at jboss.com
Date: 2009-07-28 08:58:30 -0400 (Tue, 28 Jul 2009)
New Revision: 5360
Modified:
projects/gwt-console/trunk/server/server-core/src/main/java/org/jboss/bpm/console/server/FormProcessingFacade.java
Log:
Fix JBPM-2452: outcome (transitions) vs. outcome (result) clash
Modified: projects/gwt-console/trunk/server/server-core/src/main/java/org/jboss/bpm/console/server/FormProcessingFacade.java
===================================================================
--- projects/gwt-console/trunk/server/server-core/src/main/java/org/jboss/bpm/console/server/FormProcessingFacade.java 2009-07-28 11:50:37 UTC (rev 5359)
+++ projects/gwt-console/trunk/server/server-core/src/main/java/org/jboss/bpm/console/server/FormProcessingFacade.java 2009-07-28 12:58:30 UTC (rev 5360)
@@ -81,7 +81,7 @@
return this.taskManagement;
}
-
+
private ProcessManagement getProcessManagement()
{
if(null==this.processManagement)
@@ -143,16 +143,32 @@
MultipartFormDataInput payload
)
{
- Map<String,Object> processVars = createVariableMapping(payload);
+ FieldMapping mapping = createFieldMapping(payload);
// complete task
- getTaskManagement().completeTask(
- Long.valueOf(taskId), // TODO: change to string id's
- String.valueOf(processVars.get("outcome")), // actually a plugin implementation detail
- processVars,
- request.getUserPrincipal().getName()
- );
+ String username = request.getUserPrincipal() != null ?
+ request.getUserPrincipal().getName() : null;
+ String outcomeDirective = mapping.directives.get("outcome");
+
+ if(outcomeDirective!=null)
+ {
+ getTaskManagement().completeTask(
+ Long.valueOf(taskId), // TODO: change to string id's
+ outcomeDirective, // actually a plugin implementation detail
+ mapping.processVars,
+ username
+ );
+ }
+ else
+ {
+ getTaskManagement().completeTask(
+ Long.valueOf(taskId),
+ mapping.processVars,
+ username
+ );
+ }
+
return Response.ok("Successfully processed input").build();
}
@@ -168,10 +184,11 @@
MultipartFormDataInput payload
)
{
- Map<String,Object> processVars = createVariableMapping(payload);
+ FieldMapping mapping = createFieldMapping(payload);
// start process
- ProcessInstanceRef instance = getProcessManagement().newInstance(definitionId, processVars);
+ ProcessInstanceRef instance =
+ getProcessManagement().newInstance(definitionId, mapping.processVars);
return Response.ok("Successfully processed input").build();
}
@@ -190,9 +207,9 @@
return Response.ok(dh.getDataSource()).type("text/html").build();
}
- private Map<String, Object> createVariableMapping(MultipartFormDataInput payload)
+ private FieldMapping createFieldMapping(MultipartFormDataInput payload)
{
- Map<String,Object> processVars = new HashMap<String,Object>();
+ FieldMapping mapping = new FieldMapping();
Map<String, InputPart> formData = payload.getFormData();
Iterator<String> partNames = formData.keySet().iterator();
@@ -208,7 +225,10 @@
// RFC2045: Each part has an optional "Content-Type" header
// that defaults to "text/plain".
// Can go into process without conversion
- processVars.put(partName, part.getBodyAsString());
+ if(mapping.isReserved(partName))
+ mapping.directives.put(partName, part.getBodyAsString());
+ else
+ mapping.processVars.put(partName, part.getBodyAsString());
}
else
{
@@ -239,10 +259,32 @@
}
);
- processVars.put(partName, dh);
+ mapping.processVars.put(partName, dh);
}
}
- return processVars;
+ return mapping;
}
+
+ private class FieldMapping
+ {
+ final String[] reservedNames = {"outcome", "form"}; // TODO: implementation detail of the form plugin
+
+ Map<String,Object> processVars = new HashMap<String,Object>();
+ Map<String,String> directives = new HashMap<String,String>();
+
+ public boolean isReserved(String name)
+ {
+ boolean result = false;
+ for(String s : reservedNames)
+ {
+ if(s.equals(name))
+ {
+ result = true;
+ break;
+ }
+ }
+ return result;
+ }
+ }
}
More information about the jbpm-commits
mailing list