Hello.
We have installed JBPM 3.3.0 for evaluation purposes.
During testing we ran into some problems when using subprocesses.
According to the documentation, a variable defined in a subprocess should be saved in the
"main"process when the subprocess ended.
This does not seems to be the case in this version.
Is there somthing we overlooked or is this a bug?
After the process-state "Ontvankelijkheidstoets" has ended, the variable
"subProcessResult" is on the process instance is null despite the fact that this
variable has been set in the sub process, the decision node "Resultaat OT"
however does the correct thing !
| public String decide(ExecutionContext arg0) throws Exception
| {
| System.out.println(" Decide which flow to follow depending on process
decision node.");
| String result = (String) arg0.getVariable("subProcessResult");
| if (Constants.SUCCESS.equalsIgnoreCase(result))
| {
| System.out.println("////// subProcess exection was succesfull, keep
following the yellowbrick road");
| return Constants.SUCCESS;
| } else if (Constants.FAIL.equalsIgnoreCase(result))
| {
| System.out.println("////// subProcess exection was no good, FAIL");
| return Constants.FAIL;
| } else {
| throw new Exception("Unexpected value in subProcessResult variable : "
+ result);
| }
| }
Can someone tell me what is wrong? Is it a bug or am I doing something wrong??
Any help will be greatly appreciated!!
Jan van de Klok
By the way: In version 3.2.3 the decision node "Resultaat OT" does not react on
changes of the variable at all.
This is (a part of) the process definition.
<process-definition xmlns="" name="studentRegistrationUL" >
|
| <start-state name="start-student-registratie">
| <transition to="Invoer registratie gegevens door
Student"></transition>
| </start-state>
|
| <task-node name="Invoer registratie gegevens door Student">
| <description>
| Student voert zijn persoons-, adres-, vooropleidinggegevens in en eventuele andere
gegevens welke nodig zijn voor de instelling in kwestie.
| </description>
| <task name="Invoer persoonsgegevens">
| <description>
| Voer persoonsgegevens zoals naam, geboorte datum, e.d. in
| </description>
| <assignment actor-id="#{actor.id}"></assignment>
| </task>
| <task name="Invoer woonadres">
| <description>
| Voer gegevens van het huidige woonadres in. Het woonadres is je officieel
verblijfsplaats (waar je bent ingeschreven).
| </description>
| <assignment actor-id="#{actor.id}"></assignment>
| </task>
| <task name="Opsturen paspoort">
| <description>
| Stuur kopie paspoort op of upload kopie van je paspoort
| </description>
| <assignment actor-id="#{actor.id}"></assignment>
| </task>
| <task name="Invoer vooropleiding">
| <description>
| Vooropleidingen invoeren en sturen of uploaden van een kopie van het diploma
| </description>
| <assignment actor-id="#{actor.id}"></assignment>
| </task>
| <task name="Inschrijfgeld betalen">
| <description>
| Inschrijfgeld overmaken naar de instelling
| </description>
| <assignment actor-id="#{actor.id}"></assignment>
| </task>
| <task name="Invoer taalvaardigheid">
| <description>
| Invoeren van de taalvaardigheid
| </description>
| <assignment actor-id="#{actor.id}"></assignment>
| </task>
| <transition to="Verstuur registratie gegevens naar
instelling"></transition>
| </task-node>
|
| <task-node name="Verstuur registratie gegevens naar instelling">
| <description>
| Student stuurt zijn registratie gegevens naar de instelling en start daarmee het
instellings registratie process
| </description>
| <task name="Versturen registratie gegevens">
| <description>
| Verstuur de ingevoerde registratie gegevens naar de instelling
#{chosenInstitution}
| </description>
| <assignment actor-id="#{actor.id}"></assignment>
| <controller></controller>
| </task>
| <transition to="Ontvankelijkheidstoets"></transition>
| </task-node>
|
| <process-state name="Ontvankelijkheidstoets">
| <description>
| In deze fase wordt bepaald of de aangeleverde gegevens compleet en bruikbaar zijn.
Eventueel wordt er gewacht op documenten die middels de post worden aangeleverd.
| </description>
| <sub-process name="preConditionCheckUL" binding="late"/>
| <variable name="chosenInstitution" access="read" />
| <variable name="chosenEducation" access="read" />
| <variable name="studentId" access="read" />
| <variable name="eduType" access="read" />
| <variable name="regYear" access="read" />
| <variable name="regFirstYear" access="read" />
| <variable name="pasportSendMethod" access="read" />
| <variable name="pooledActors" access="read" />
| <variable name="subProcessResult" access="read,write" />
| <transition to="Resultaat OT"
name="success"></transition>
| </process-state>
|
| <process-state name="Diploma waardering">
| <description>
| De aangeleverde vooropleidinggegevens en kopieen van diploma s worden getoetst en
beoordeeld of deze volledig en voldoende zijn.
| </description>
| <sub-process name="diplomaCheck"
binding="late"></sub-process>
| <variable name="chosenInstitution" access="read" />
| <variable name="chosenEducation" access="read" />
| <variable name="studentId" access="read" />
| <variable name="eduType" access="read" />
| <variable name="regYear" access="read" />
| <variable name="regFirstYear" access="read" />
| <variable name="subProcessResult" access="read,write" />
| <transition to="Resultaat DW"></transition>
| </process-state>
|
| <process-state name="Beoordeling toelatingscommissie">
| <description>
| Een commissie bepaald of de student toelaatbaar is (voor Masters studenten).
| </description>
| <sub-process name="acceptanceCommitee"
binding="late"></sub-process>
| <variable name="chosenInstitution" access="read" />
| <variable name="chosenEducation" access="read" />
| <variable name="studentId" access="read" />
| <variable name="eduType" access="read" />
| <variable name="regYear" access="read" />
| <variable name="regFirstYear" access="read" />
| <variable name="subProcessResult" access="read,write" />
| <transition to="Resultaat BT"></transition>
| </process-state>
|
| <process-state name="Toelaten">
| <description>
| Medewerker controleert alle tot dan verzamelde informatie en besluit wel of geen
toelating tot het inschrijfproces.
| </description>
| <sub-process name="acceptanceCheck"
binding="late"></sub-process>
| <variable name="chosenInstitution" access="read" />
| <variable name="chosenEducation" access="read" />
| <variable name="studentId" access="read" />
| <variable name="eduType" access="read" />
| <variable name="regYear" access="read" />
| <variable name="regFirstYear" access="read" />
| <variable name="subProcessResult" access="read,write" />
| <transition to="Resultaat T"></transition>
| </process-state>
|
| <decision name="Resultaat OT">
| <handler class="nl.chronotech.ibis.task.SubProcessDecision"/>
| <transition to="Niet ontvankelijk"
name="fail"></transition>
| <transition to="Diploma waardering"
name="success"></transition>
| </decision>
|
| <decision name="Resultaat DW">
| <handler class="nl.chronotech.ibis.task.SubProcessDecision"/>
| <transition to="Beoordeling toelatingscommissie"
name="success"></transition>
| <transition to="Diploma voldoet niet"
name="fail"></transition>
| </decision>
|
| <decision name="Resultaat BT">
| <handler class="nl.chronotech.ibis.task.SubProcessDecision"/>
| <transition to="Afgewezen"
name="fail"></transition>
| <transition to="Toelaten"
name="success"></transition>
| </decision>
|
| <decision name="Resultaat T">
| <handler class="nl.chronotech.ibis.task.SubProcessDecision"/>
| <transition to="Afgewezen"
name="fail"></transition>
| <transition to="Toegelaten"
name="success"></transition>
| </decision>
|
| <end-state name="Toegelaten">
| <description>
| Gefeliciteerd de instelling heeft besloten dat u toelaatbaar bent tot de gekozen
opleiding. U kunt nu verder door het indienen van een verzoek tot inschrijven.
|
| </description>
| </end-state>
|
| <end-state name="Afgewezen">
| <description>
| De instelling heeft de registratie gegevens beoordeeld en besloten dat deze geen
toegang geven tot de gekozen opleiding.
| </description>
| </end-state>
|
| <end-state name="Niet ontvankelijk">
| <description>
| Een medewerker van de instelling heeft bepaald dat de registratie aanvraag niet
ontvankelijk is. Zie de toelichting voor nadere informatie met betrekking tot de reden.
| </description>
| </end-state>
|
| <end-state name="Diploma voldoet niet">
| <description>
| Een medewerker van de instelling heeft de opgestuurde diploma's beoordeeld en
besloten dat deze geen toegang geven tot de gekozen opleiding. Voor meer informatie zie
mededelingen.
| </description>
| </end-state>
|
|
| </process-definition>
<process-definition xmlns="" name="preConditionCheckUL">
|
| <start-state name="start-state1">
| <transition to="3fork"></transition>
| </start-state>
|
| <task-node name="Controleer student gegevens">
| <description>
| De verzamelde gegevens van student worden gecontroleerd
| </description>
| <task name="Invoer resultaat controle student gegevens">
| <description>
| Taak voor controle juistheid gegevens en invoer resultaat
| </description>
| <assignment
pooled-actors="#{actor.groupActorIds}"></assignment>
| </task>
| <transition to="end-state1"></transition>
| </task-node>
|
| <fork name="3fork">
| <transition to="Registratie ontvangst paspoort" name="to reg
Pasport">
| </transition>
| <transition to="Registratie ontvangst diploma" name="to
Registratie ontvangst diploma">
| </transition>
| <transition to="Registratie ontvangst inschrijfgeld" name="to
Registratie ontvangst inschrijfgeld">
| </transition>
| </fork>
|
| <task-node name="Registratie ontvangst paspoort">
| <description>
| Registratie ontvangst paspoort #{studentStatus.actorId}
| </description>
| <task name="Registreren ontvangst paspoort">
| <description>
| Registreren dat kopie paspoort is ontvangen per post #{studentStatus.actorId}
| </description>
| <assignment
pooled-actors="#{contextUtil.processPooledActors}"></assignment>
| </task>
| <transition to="join1"></transition>
| </task-node>
|
| <task-node name="Registratie ontvangst diploma">
| <description>
| Registratie ontvangst diploma
| </description>
| <task name="Registreren ontvangst diploma">
| <description>
| Registreren dat kopie diploma is ontvangen per post voor
#{studentStatus.actorId}
| </description>
| <assignment
pooled-actors="#{contextUtil.processPooledActors}"></assignment>
| </task>
| <transition to="join1" name="from reg
diploma"></transition>
| </task-node>
|
| <task-node name="Registratie ontvangst inschrijfgeld">
| <description>
| Registratie ontvangst inschrijfgeld voor #{studentStatus.actorId}
| </description>
| <task name="Registreren ontvangst inschrijfgeld">
| <description>
| Registreren dat inschrijfgeld is betaald voor #{studentStatus.actorId}
| </description>
| <assignment
pooled-actors="#{contextUtil.processPooledActors}"></assignment>
| </task>
| <transition to="join1" name="from
inschrijfgeld"></transition>
| </task-node>
|
| <join name="join1">
| <transition to="Controleer student gegevens"></transition>
| </join>
|
| <end-state name="end-state1">
| </end-state>
|
| </process-definition>
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4196474#...
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&a...