<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<body link="#355491" alink="#4262a1" vlink="#355491" style="background: #e2e2e2; margin: 0; padding: 20px;">
<div>
        <table cellpadding="0" bgcolor="#FFFFFF" border="0" cellspacing="0" style="border: 1px solid #dadada; margin-bottom: 30px; width: 100%; -moz-border-radius: 6px; -webkit-border-radius: 6px;">
                <tbody>
                        <tr>
                                <td>
                                        <table border="0" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF" style="border: solid 2px #ccc; background: #dadada; width: 100%; -moz-border-radius: 6px; -webkit-border-radius: 6px;">
                                                <tbody>
                                                        <tr>
                                                                <td bgcolor="#000000" valign="middle" height="58px" style="border-bottom: 1px solid #ccc; padding: 20px; -moz-border-radius-topleft: 3px; -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 5px; -webkit-border-top-left-radius: 5px;">
                                                                        <h1 style="color: #333333; font: bold 22px Arial, Helvetica, sans-serif; margin: 0; display: block !important;">
                                                                        <!-- To have a header image/logo replace the name below with your img tag -->
                                                                        <!-- Email clients will render the images when the message is read so any image -->
                                                                        <!-- must be made available on a public server, so that all recipients can load the image. -->
                                                                        <a href="http://community.jboss.org/index.jspa" style="text-decoration: none; color: #E1E1E1">JBoss Community</a></h1>
                                                                </td>
                                                        </tr>
                                                        <tr>
                                                                <td bgcolor="#FFFFFF" style="font: normal 12px Arial, Helvetica, sans-serif; color:#333333; padding: 20px; -moz-border-radius-bottomleft: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 5px; -webkit-border-bottom-left-radius: 5px;"><h3 style="margin: 10px 0 5px; font-size: 17px; font-weight: normal;">
Cancel a process throws exceptions
</h3>
<span style="margin-bottom: 10px;">
reply from <a href="http://community.jboss.org/people/matrixpooh">Al Nadein</a> in <i>jBPM</i> - <a href="http://community.jboss.org/message/558639#558639">View the full discussion</a>
</span>
<hr style="margin: 20px 0; border: none; background-color: #dadada; height: 1px;">
<div class="jive-rendered-content"><pre class="jive-pre"><code class="jive-code jive-java"><font color="navy"><b>package</b></font> workflow;
 
<font color="navy"><b>import</b></font> java.util.HashMap;
<font color="navy"><b>import</b></font> java.util.Map;
 
<font color="navy"><b>import</b></font> junit.framework.Assert;
 
<font color="navy"><b>import</b></font> org.jbpm.api.Configuration;
<font color="navy"><b>import</b></font> org.jbpm.api.Execution;
<font color="navy"><b>import</b></font> org.jbpm.api.ExecutionService;
<font color="navy"><b>import</b></font> org.jbpm.api.IdentityService;
<font color="navy"><b>import</b></font> org.jbpm.api.ProcessEngine;
<font color="navy"><b>import</b></font> org.jbpm.api.ProcessInstance;
<font color="navy"><b>import</b></font> org.jbpm.api.RepositoryService;
<font color="navy"><b>import</b></font> org.jbpm.api.activity.ActivityExecution;
<font color="navy"><b>import</b></font> org.jbpm.api.cmd.Command;
<font color="navy"><b>import</b></font> org.jbpm.api.cmd.Environment;
<font color="navy"><b>import</b></font> org.junit.After;
<font color="navy"><b>import</b></font> org.junit.Before;
<font color="navy"><b>import</b></font> org.junit.Ignore;
<font color="navy"><b>import</b></font> org.junit.Test;
<font color="navy"><b>import</b></font> org.slf4j.Logger;
<font color="navy"><b>import</b></font> org.slf4j.LoggerFactory;
 
<font color="navy"><b>public</b></font> <font color="navy"><b>class</b></font> OpenProcessWithinProcessTest <font color="navy">{</font>
 
    <font color="navy"><b>private</b></font> <font color="navy"><b>static</b></font> <font color="navy"><b>final</b></font> Logger log = LoggerFactory.getLogger(OpenProcessWithinProcessTest.class);
   
    <font color="navy"><b>public</b></font> IdentityService identityService ;
    <font color="navy"><b>public</b></font> ExecutionService executionService;
    <font color="navy"><b>public</b></font> RepositoryService repositoryService;
   
    <font color="navy"><b>static</b></font> <font color="navy"><b>final</b></font> String XML_MAIN = <font color="red">"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n"</font> +
            <font color="red">"\r\n"</font> +
            <font color="red">"<process key=\"main\" name=\"main\" xmlns=\"http://jbpm.org/4.4/jpdl\">\r\n"</font> +
            <font color="red">"   \r\n"</font> +
            <font color="red">"   <start g=\"228,13,48,48\" name=\"start\">\r\n"</font> +
            <font color="red">"      <transition g=\"-73,-9\" name=\"to-Open Case\" to=\"Open Case\"/>\r\n"</font> +
            <font color="red">"   </start>\r\n"</font> +
            <font color="red">"   \r\n"</font> +
            <font color="red">"   <foreach g=\"230,288,48,48\" in=\"#{events}\" name=\"foreach\" var=\"event\">\r\n"</font> +
            <font color="red">"      <transition to=\"Create a sub-process\"/>\r\n"</font> +
            <font color="red">"   </foreach>\r\n"</font> +
            <font color="red">"   \r\n"</font> +
            <font color="red">"   <custom class=\"com.gs.crd.requestmanager.workflow.mainprocess.OpenCase\" g=\"192,98,126,52\" name=\"Open Case\">\r\n"</font> +
            <font color="red">"      <transition g=\"-58,-12\" name=\"to-case-termination-fork\" to=\"fork1\"/>\r\n"</font> +
            <font color="red">"   </custom>\r\n"</font> +
            <font color="red">"   <join g=\"230,462,48,48\" multiplicity=\"#{quorum + 1}\" name=\"join\">\r\n"</font> +
            <font color="red">"      <transition g=\"-38,-14\" name=\"to-end\" to=\"end\"/>\r\n"</font> +
            <font color="red">"   </join>\r\n"</font> +
            <font color="red">"   <end g=\"232,628,48,48\" name=\"end\"/>\r\n"</font> +
            <font color="red">"   \r\n"</font> +
            <font color="red">"   <sub-process g=\"193,371,124,52\" name=\"Create a sub-process\" sub-process-key=\"#{event.name}\">\r\n"</font> +
            <font color="red">"      <parameter-in expr=\"#{event.id}\" subvar=\"actionlistid\"/>\r\n"</font> +
            <font color="red">"      <transition g=\"-35,-18\" name=\"to-join\" to=\"join\"/>\r\n"</font> +
            <font color="red">"   </sub-process>\r\n"</font> +
            <font color="red">"   <fork g=\"230,194,48,48\" name=\"fork1\">\r\n"</font> +
            <font color="red">"      <transition g=\"-23,-16\" name=\"to foreach\" to=\"foreach\"/>\r\n"</font> +
            <font color="red">"      <transition g=\"-67,-8\" name=\"to Wait for Case Termination\" to=\"Wait for Case Termination\"/>\r\n"</font> +
            <font color="red">"      \r\n"</font> +
            <font color="red">"   </fork>\r\n"</font> +
            <font color="red">"   <state g=\"466,358,155,52\" name=\"Wait for Case Termination\">\r\n"</font> +
            <font color="red">"      <transition g=\"-24,-2\" name=\"to join\" to=\"join\"/>\r\n"</font> +
            <font color="red">"   </state>\r\n"</font> +
            <font color="red">"     \r\n"</font> +
            <font color="red">"</process>"</font>;
 
    <font color="navy"><b>static</b></font> <font color="navy"><b>final</b></font> String XML_SUB = <font color="red">"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n"</font> +
            <font color="red">"\r\n"</font> +
            <font color="red">"<process description=\"Create Accounts\" key=\"subprocess\" name=\"subprocess\" xmlns=\"http://jbpm.org/4.4/jpdl\">\r\n"</font> +
            <font color="red">"    <start g=\"10,48,48,48\" name=\"start\">\r\n"</font> +
            <font color="red">"      <transition g=\"-20,-17\" name=\"to task1\" to=\"task1\"/>\r\n"</font> +
            <font color="red">"    </start>\r\n"</font> +
            <font color="red">"    \r\n"</font> +
            <font color="red">"    <end g=\"530,50,48,48\" name=\"end\"/>\r\n"</font> +
            <font color="red">"    \r\n"</font> +
            <font color="red">"    <task g=\"120,48,116,52\" name=\"task1\">\r\n"</font> +
            <font color="red">"      <assignment-handler class=\"com.gs.crd.requestmanager.workflow.DummyTaskAssignmentHandler\"/>"</font> +
            <font color="red">"      <transition g=\"-44,-18\" name=\"from-task1\" to=\"task2\"/>\r\n"</font> +
            <font color="red">"    </task>\r\n"</font> +
            <font color="red">"    \r\n"</font> +
            <font color="red">"    <task g=\"336,48,114,52\" name=\"task2\">\r\n"</font> + 
            <font color="red">"      <transition g=\"-36,-18\" name=\"from-task2\" to=\"end\"/>\r\n"</font> +
            <font color="red">"    </task>\r\n"</font> +
            <font color="red">"    \r\n"</font> +
            <font color="red">"</process>"</font>;
 
    String deploymentId;
 
   
    ProcessEngine processEngine;
    @Before
    <font color="navy"><b>public</b></font> <font color="navy"><b>void</b></font> setUp() <font color="navy"><b>throws</b></font> Exception <font color="navy">{</font>
 
<font color="darkgreen">//        RequestManagerServicesInitializer.initWorkflowServiceForTests();</font>
               
        processEngine = <font color="navy"><b>new</b></font> Configuration().setResource(<font color="red">"jbpm.test.cfg.xml"</font>).buildProcessEngine();
 
        identityService = processEngine.getIdentityService();
        executionService = processEngine.getExecutionService();
        repositoryService = processEngine.getRepositoryService();
       
        identityService.createUser(<font color="red">"jd"</font>, <font color="red">"jd"</font>, <font color="red">"jd"</font>);
        identityService.createGroup(<font color="red">"dummy"</font>);
        identityService.createMembership(<font color="red">"jd"</font>, <font color="red">"dummy"</font>, <font color="red">"role"</font>);
        deploymentId = repositoryService.createDeployment().addResourceFromString(<font color="red">"main.jpdl.xml"</font>, XML_MAIN)
                .addResourceFromString(<font color="red">"sub.jpdl.xml"</font>, XML_SUB).deploy();
    <font color="navy">}</font>
 
    @After <font color="navy"><b>public</b></font> <font color="navy"><b>void</b></font> tearDown() <font color="navy"><b>throws</b></font> Exception <font color="navy">{</font>
<font color="darkgreen">//        identityService.deleteUser("johndoe");</font>
<font color="darkgreen">//        identityService.deleteGroup("group");</font>
<font color="darkgreen">//        repositoryService.deleteDeploymentCascade(deploymentId);</font>
    <font color="navy">}</font>
 
    @Ignore
    <font color="navy"><b>public</b></font> <font color="navy"><b>void</b></font> testDefault() <font color="navy"><b>throws</b></font> Exception <font color="navy">{</font>
        ProcessInstance processInstance = executionService.startProcessInstanceByKey(<font color="red">"main"</font>);
        Assert.assertNotNull(processInstance.getId());
    <font color="navy">}</font>
   
    @Test
    <font color="navy"><b>public</b></font> <font color="navy"><b>void</b></font> testCancelBusinessProcess()<font color="navy">{</font>
       
        SubprocessInputValues[] events = <font color="navy"><b>new</b></font> SubprocessInputValues[] <font color="navy">{</font>
                <font color="navy"><b>new</b></font> SubprocessInputValues(<font color="red">"subprocess"</font>, 134),
                <font color="navy"><b>new</b></font> SubprocessInputValues(<font color="red">"subprocess"</font>, 134)<font color="navy">}</font>;
       
        Map<String, Object> variables = <font color="navy"><b>new</b></font> HashMap<String, Object>();
        variables.put(<font color="red">"events"</font>, events);
        variables.put(<font color="red">"quorum"</font>, <font color="navy"><b>new</b></font> Integer(events.length));
        <font color="navy"><b>final</b></font> ProcessInstance processInstance = executionService.startProcessInstanceByKey(<font color="red">"main"</font>, variables);
        String processInstanceId = processInstance.getId();
        <font color="navy"><b>final</b></font> ProcessInstance processInstance1  = executionService.createProcessInstanceQuery().processInstanceId(processInstanceId).uniqueResult();;
       
<font color="darkgreen">//        ((ActivityExecution)processInstance).end(Execution.STATE_ENDED);</font>
        processEngine.execute(<font color="navy"><b>new</b></font> Command<Void>()<font color="navy">{</font>
            @Override
            <font color="navy"><b>public</b></font> Void execute(Environment environment) <font color="navy"><b>throws</b></font> Exception <font color="navy">{</font>
                ((ActivityExecution)processInstance1).end(Execution.STATE_ENDED);
                <font color="navy"><b>return</b></font> <font color="navy"><b>null</b></font>;
            <font color="navy">}</font><font color="navy">}</font>);   
 
    <font color="navy">}</font>
 
<font color="navy">}</font>
</code></pre></div>
<div style="background-color: #f4f4f4; padding: 10px; margin-top: 20px;">
<p style="margin: 0;">Reply to this message by <a href="http://community.jboss.org/message/558639#558639">going to Community</a></p>
        <p style="margin: 0;">Start a new discussion in jBPM at <a href="http://community.jboss.org/choose-container!input.jspa?contentType=1&containerType=14&container=2034">Community</a></p>
</div></td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</div>
</body>
</html>