# CMMN: human task activated but not expected

**URL:** <https://forum.flowable.org/t/cmmn-human-task-activated-but-not-expected/3468>\
**Category:** Flowable Engine\
**Created:** [February 20, 2019, 10:04am UTC](https://forum.flowable.org/t/cmmn-human-task-activated-but-not-expected/3468 "2019-02-20T10:04:25Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![cdeneux](https://yyz1.discourse-cdn.com/flex035/user_avatar/forum.flowable.org/cdeneux/32/186_2.png) [@cdeneux](https://forum.flowable.org/u/cdeneux)\
**Post date:** [February 20, 2019, 10:04am UTC](https://forum.flowable.org/t/cmmn-human-task-activated-but-not-expected/3468/1 "2019-02-20T10:04:26Z")

</div>

Hi all,

I have designed a case management model with Flowable Modeler. Following an extract:  
 ![cmmn-extract](https://canada1.discourse-cdn.com/flex035/uploads/flowable/original/2X/7/76037ca9aeb008946378ba7d62bca0aa44441e98.png)  
with following properties:

- the transition event from my both events (user, timer) to sentries of milestone are declared as ‘occur’,
- the transition event from the milestone to the human task is declared as ‘complete’,
- no specific condition on sentries.

When I execute this case with Flowable Task, the task “Take out dirty sheets and towels” is available just after to have created a case instance. I expect that I must fire the user event before to see the human task, no ? Perhaps something is wrong but I don’t see what. Please, can you help me to point my misunderstood ?

Thank a lot,  
Christophe

---

<div class="post-metadata">

**Author:** ![cdeneux](https://yyz1.discourse-cdn.com/flex035/user_avatar/forum.flowable.org/cdeneux/32/186_2.png) [@cdeneux](https://forum.flowable.org/u/cdeneux)\
**Post date:** [February 27, 2019, 8:26am UTC](https://forum.flowable.org/t/cmmn-human-task-activated-but-not-expected/3468/2 "2019-02-27T08:26:46Z")

</div>

Hi all,

Nobody has any idea ? Is it correct in a CMMN way and is the problem due to an issue in Flowable CMMN engine, or did I model something wrong ?

Thanks for your help  
Christophe

---

<div class="post-metadata">

**Author:** ![joram](https://yyz1.discourse-cdn.com/flex035/user_avatar/forum.flowable.org/joram/32/26_2.png) [@joram](https://forum.flowable.org/u/joram)\
**Post date:** [February 27, 2019, 8:35am UTC](https://forum.flowable.org/t/cmmn-human-task-activated-but-not-expected/3468/3 "2019-02-27T08:35:53Z")

</div>

> [@cdeneux](#):
>
> the task “Take out dirty sheets and towels” is available just after to have created a case instance.

That definitely shouldn’t happen here, the sentry should guard that.

Can you paste the CMMN XML? I have a suspicion you might have hit a bug where the sentry didn’t connect properly in the modeler.

---

<div class="post-metadata">

**Author:** ![cdeneux](https://yyz1.discourse-cdn.com/flex035/user_avatar/forum.flowable.org/cdeneux/32/186_2.png) [@cdeneux](https://forum.flowable.org/u/cdeneux)\
**Post date:** [February 27, 2019, 12:06pm UTC](https://forum.flowable.org/t/cmmn-human-task-activated-but-not-expected/3468/4 "2019-02-27T12:06:00Z")

</div>

Hi @joram,

Here after the full CMMN XML. Thanks for your help.

Regards,  
Christophe

* * *

```
<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://www.omg.org/spec/CMMN/20151109/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:flowable="http://flowable.org/cmmn" xmlns:cmmndi="http://www.omg.org/spec/CMMN/20151109/CMMNDI" xmlns:dc="http://www.omg.org/spec/CMMN/20151109/DC" xmlns:di="http://www.omg.org/spec/CMMN/20151109/DI" targetNamespace="http://www.flowable.org/casedef">
  <case id="hotelRoomCleaning" name="Hotel room cleaning" flowable:initiatorVariableName="initiator">
    <casePlanModel id="casePlanModel" flowable:includeInStageOverview="false">
      <planItem id="planItem1" name="Room unused for one month" definitionRef="sid-60BF3EA5-5712-4926-BC5C-C97511E82E43"></planItem>
      <planItem id="planItem2" name="Guest has left hotel" definitionRef="sid-4728EEFB-4415-4965-995C-E7DB8A1319E9"></planItem>
      <planItem id="planItem3" name="Room must be cleaned" definitionRef="sid-F2EB3CAD-5DE4-4154-B55B-2EBDF3A21560">
        <entryCriterion id="sid-38917D29-C2BE-4CE2-8E35-9983A61906D5" sentryRef="sentry9"></entryCriterion>
      </planItem>
      <planItem id="planItem4" name="Take out dirty sheets and towels" definitionRef="sid-47635097-3B9E-4D8A-A274-F00D9A2A6788"></planItem>
      <planItem id="planItem5" name="Put clean towels and sheets" definitionRef="sid-1B13174E-D55E-4CEC-B701-443D011D6057">
        <entryCriterion id="sid-D0221679-8CC8-4C86-8EEF-E40C1688D663" sentryRef="sentry2"></entryCriterion>
      </planItem>
      <planItem id="planItem6" name="Put new flowers (if flowers are old)" definitionRef="sid-BEAAF2D5-2215-48CA-AC59-0EF0113D2204">
        <entryCriterion id="sid-2A39CE55-54CD-42D9-9B99-671A1243BE79" sentryRef="sentry1"></entryCriterion>
      </planItem>
      <planItem id="planItem7" name="Room is ready for new guests" definitionRef="sid-A4785D94-FFEF-43C6-9676-F0026FE0F82E">
        <entryCriterion id="sid-401E9C55-C190-43D8-8221-53BC4AD9A08B" sentryRef="sentry5"></entryCriterion>
      </planItem>
      <planItem id="planItem8" name="Set room as cleaned" definitionRef="sid-D6EED47E-68BF-401B-85D9-23EA163653E2">
        <entryCriterion id="sid-77200D97-EEFD-47E9-9BB1-C272337830C0" sentryRef="sentry7"></entryCriterion>
      </planItem>
      <planItem id="planItem9" name="Vacuum &amp; clean room" definitionRef="sid-9AF62D7C-717F-4BA2-AAA2-05CE617488E0">
        <entryCriterion id="sid-5587C5F6-BF77-4BB8-8B45-E5AA249D70BC" sentryRef="sentry4"></entryCriterion>
      </planItem>
      <sentry id="sentry9">
        <planItemOnPart id="sentryOnPart1" sourceRef="planItem2">
          <standardEvent>occur</standardEvent>
        </planItemOnPart>
      </sentry>
      <sentry id="sentry2">
        <planItemOnPart id="sentryOnPart2" sourceRef="planItem9">
          <standardEvent>complete</standardEvent>
        </planItemOnPart>
      </sentry>
      <sentry id="sentry1">
        <planItemOnPart id="sentryOnPart3" sourceRef="planItem9">
          <standardEvent>complete</standardEvent>
        </planItemOnPart>
      </sentry>
      <sentry id="sentry5">
        <planItemOnPart id="sentryOnPart4" sourceRef="planItem6">
          <standardEvent>complete</standardEvent>
        </planItemOnPart>
        <planItemOnPart id="sentryOnPart5" sourceRef="planItem5">
          <standardEvent>complete</standardEvent>
        </planItemOnPart>
      </sentry>
      <sentry id="sentry7">
        <planItemOnPart id="sentryOnPart6" sourceRef="planItem7">
          <standardEvent>complete</standardEvent>
        </planItemOnPart>
      </sentry>
      <sentry id="sentry4">
        <planItemOnPart id="sentryOnPart7" sourceRef="planItem4">
          <standardEvent>complete</standardEvent>
        </planItemOnPart>
      </sentry>
      <timerEventListener id="sid-60BF3EA5-5712-4926-BC5C-C97511E82E43" name="Room unused for one month">
        <timerExpression><![CDATA[P1M]]></timerExpression>
      </timerEventListener>
      <userEventListener id="sid-4728EEFB-4415-4965-995C-E7DB8A1319E9" name="Guest has left hotel"></userEventListener>
      <milestone id="sid-F2EB3CAD-5DE4-4154-B55B-2EBDF3A21560" name="Room must be cleaned"></milestone>
      <humanTask id="sid-47635097-3B9E-4D8A-A274-F00D9A2A6788" name="Take out dirty sheets and towels" flowable:assignee="${initiator}">
        <extensionElements>
          <modeler:initiator-can-complete xmlns:modeler="http://flowable.org/modeler"><![CDATA[false]]></modeler:initiator-can-complete>
        </extensionElements>
      </humanTask>
      <humanTask id="sid-1B13174E-D55E-4CEC-B701-443D011D6057" name="Put clean towels and sheets" flowable:assignee="${initiator}">
        <extensionElements>
          <modeler:initiator-can-complete xmlns:modeler="http://flowable.org/modeler"><![CDATA[false]]></modeler:initiator-can-complete>
        </extensionElements>
      </humanTask>
      <humanTask id="sid-BEAAF2D5-2215-48CA-AC59-0EF0113D2204" name="Put new flowers (if flowers are old)" flowable:assignee="${initiator}">
        <extensionElements>
          <modeler:initiator-can-complete xmlns:modeler="http://flowable.org/modeler"><![CDATA[false]]></modeler:initiator-can-complete>
        </extensionElements>
      </humanTask>
      <milestone id="sid-A4785D94-FFEF-43C6-9676-F0026FE0F82E" name="Room is ready for new guests"></milestone>
      <task id="sid-D6EED47E-68BF-401B-85D9-23EA163653E2" name="Set room as cleaned" flowable:type="script" flowable:scriptFormat="Groovy">
        <extensionElements>
          <flowable:field name="script">
            <flowable:string><![CDATA[println "Room " + (planItemInstance.getVariable("roomNumber") != null ? roomNumber + " " : "") + "is ready !!"
planItemInstance.setVariable("roomAvailable", true)]]></flowable:string>
          </flowable:field>
        </extensionElements>
      </task>
      <humanTask id="sid-9AF62D7C-717F-4BA2-AAA2-05CE617488E0" name="Vacuum &amp; clean room" flowable:assignee="${initiator}">
        <extensionElements>
          <modeler:initiator-can-complete xmlns:modeler="http://flowable.org/modeler"><![CDATA[false]]></modeler:initiator-can-complete>
        </extensionElements>
      </humanTask>
    </casePlanModel>
  </case>
</definitions>
```

---

<div class="post-metadata">

**Author:** ![joram](https://yyz1.discourse-cdn.com/flex035/user_avatar/forum.flowable.org/joram/32/26_2.png) [@joram](https://forum.flowable.org/u/joram)\
**Post date:** [March 4, 2019, 8:24am UTC](https://forum.flowable.org/t/cmmn-human-task-activated-but-not-expected/3468/5 "2019-03-04T08:24:34Z")

</div>

Looking at the xml, the sentry doesn’t seem to be connected indeed:

`<planItem id="planItem4" name="Take out dirty sheets and towels" definitionRef="sid-47635097-3B9E-4D8A-A274-F00D9A2A6788"></planItem>`

If it would have one, it would look like the other task:

```
<planItem id="planItem3" name="Room must be cleaned" definitionRef="sid-F2EB3CAD-5DE4-4154-B55B-2EBDF3A21560">
        <entryCriterion id="sid-38917D29-C2BE-4CE2-8E35-9983A61906D5" sentryRef="sentry9"></entryCriterion>
      </planItem>

```

Can you open up the model and try to reconnect it to the task, export again and make sure the xml element for that tasks contains the the entryCriterion?

---

<div class="post-metadata">

**Author:** ![cdeneux](https://yyz1.discourse-cdn.com/flex035/user_avatar/forum.flowable.org/cdeneux/32/186_2.png) [@cdeneux](https://forum.flowable.org/u/cdeneux)\
**Post date:** [March 5, 2019, 2:17pm UTC](https://forum.flowable.org/t/cmmn-human-task-activated-but-not-expected/3468/6 "2019-03-05T14:17:14Z")

</div>

Thanks Joram,

Using Flowable Modeler, it is needed to be precise when moving sentry. It should be put on the green line. If you move the sentry on task but without green line, the connection is not done.

After to fix the CMMN XML as you told me, the human task is no more automatically activated when creating a case instance. Right !

But now, if I fire the user event, no human task is available. I don’t understand why, all seems ok for me ? Can you help me again ? Here after the CMMN XML updated.

Regards,  
Christophe

```
<definitions ...>
  <case id="hotelRoomCleaning" name="Hotel room cleaning" flowable:initiatorVariableName="initiator">
    <casePlanModel id="casePlanModel" flowable:includeInStageOverview="false">
      <planItem id="planItem1" name="Room unused for one month" definitionRef="sid-C1346042-B9CE-4D8C-A872-45504D833005"></planItem>
      <planItem id="planItem2" name="Guest has left hotel" definitionRef="sid-56E53F7D-4C23-4CAC-BB75-1A716AD79360"></planItem>
      <planItem id="planItem3" name="Room must be cleaned" definitionRef="sid-46DF90F3-C7C0-400B-A9F8-A0BEDDAE43D6">
        <entryCriterion id="sid-53D48182-7459-4909-892C-833DB2C8BC95" sentryRef="sentry7"></entryCriterion>
        <entryCriterion id="sid-74B725BC-C097-4BBC-958F-EAD587982B46" sentryRef="sentry8"></entryCriterion>
      </planItem>
      <planItem id="planItem4" name="Take out dirty sheets and towels" definitionRef="sid-D09E9A97-AF98-4FF9-976C-9F7C785DCF9E">
        <entryCriterion id="sid-4F336A2B-7C4A-410E-9BBA-4C1FA5245846" sentryRef="sentry5"></entryCriterion>
      </planItem>
      <planItem id="planItem5" name="Put clean towels and sheets" definitionRef="sid-F0E47260-E166-41A7-B932-0047B8756EC2">
        <entryCriterion id="sid-9AAAE655-C305-4C35-B6AE-55923345CBFB" sentryRef="sentry6"></entryCriterion>
      </planItem>
      <planItem id="planItem6" name="Vacuum &amp; clean room" definitionRef="sid-561EBE4C-62C7-4CA1-8166-268008AC88A5">
        <entryCriterion id="sid-7ED88131-F4DF-4576-8982-6588AB8E405F" sentryRef="sentry1"></entryCriterion>
      </planItem>
      <planItem id="planItem7" name="Put new flowers (if flowers are old)" definitionRef="sid-E68CF652-4E19-49C8-AE4D-72D45102E626">
        <entryCriterion id="sid-6716D4BA-5AAF-4348-830D-0318610636C9" sentryRef="sentry2"></entryCriterion>
      </planItem>
      <planItem id="planItem8" name="Room is ready for new guests" definitionRef="sid-E76CAA66-ECF2-4613-B7E6-0E7B0403A186">
        <entryCriterion id="sid-7E5FBB47-53D7-4F71-B77D-44F67C7D68BB" sentryRef="sentry3"></entryCriterion>
      </planItem>
      <planItem id="planItem9" name="Set room as cleaned" definitionRef="sid-CF5E5A2A-4B8E-4D07-8FCE-1624F9E0E448">
        <entryCriterion id="sid-AFA5C764-D88E-4948-9A5A-C6899D2C9505" sentryRef="sentry4"></entryCriterion>
      </planItem>
      <sentry id="sentry7">
        <planItemOnPart id="sentryOnPart1" sourceRef="planItem2">
          <standardEvent>occur</standardEvent>
        </planItemOnPart>
      </sentry>
      <sentry id="sentry8">
        <planItemOnPart id="sentryOnPart2" sourceRef="planItem1">
          <standardEvent>occur</standardEvent>
        </planItemOnPart>
      </sentry>
      <sentry id="sentry5">
        <planItemOnPart id="sentryOnPart3" sourceRef="planItem3">
          <standardEvent>complete</standardEvent>
        </planItemOnPart>
      </sentry>
      <sentry id="sentry6">
        <planItemOnPart id="sentryOnPart4" sourceRef="planItem6">
          <standardEvent>complete</standardEvent>
        </planItemOnPart>
      </sentry>
      <sentry id="sentry1">
        <planItemOnPart id="sentryOnPart5" sourceRef="planItem4">
          <standardEvent>complete</standardEvent>
        </planItemOnPart>
      </sentry>
      <sentry id="sentry2">
        <planItemOnPart id="sentryOnPart6" sourceRef="planItem6">
          <standardEvent>complete</standardEvent>
        </planItemOnPart>
      </sentry>
      <sentry id="sentry3">
        <planItemOnPart id="sentryOnPart7" sourceRef="planItem7">
          <standardEvent>complete</standardEvent>
        </planItemOnPart>
        <planItemOnPart id="sentryOnPart8" sourceRef="planItem5">
          <standardEvent>complete</standardEvent>
        </planItemOnPart>
      </sentry>
      <sentry id="sentry4">
        <planItemOnPart id="sentryOnPart9" sourceRef="planItem8">
          <standardEvent>complete</standardEvent>
        </planItemOnPart>
      </sentry>
      <sentry id="sentry9">
        <ifPart>
          <condition><![CDATA[${caseInstance.getVariable('roomAvailable') != null && roomAvailable}]]></condition>
        </ifPart>
      </sentry>
      <timerEventListener id="sid-C1346042-B9CE-4D8C-A872-45504D833005" name="Room unused for one month">
        <timerExpression><![CDATA[P1M]]></timerExpression>
      </timerEventListener>
      <userEventListener id="sid-56E53F7D-4C23-4CAC-BB75-1A716AD79360" name="Guest has left hotel"></userEventListener>
      <milestone id="sid-46DF90F3-C7C0-400B-A9F8-A0BEDDAE43D6" name="Room must be cleaned"></milestone>
      <humanTask id="sid-D09E9A97-AF98-4FF9-976C-9F7C785DCF9E" name="Take out dirty sheets and towels" flowable:assignee="${initiator}">
        <extensionElements>
          <modeler:flowable-idm-initiator xmlns:modeler="http://flowable.org/modeler"><![CDATA[true]]></modeler:flowable-idm-initiator>
        </extensionElements>
      </humanTask>
      <humanTask id="sid-F0E47260-E166-41A7-B932-0047B8756EC2" name="Put clean towels and sheets" flowable:assignee="${initiator}">
        <extensionElements>
          <modeler:flowable-idm-initiator xmlns:modeler="http://flowable.org/modeler"><![CDATA[true]]></modeler:flowable-idm-initiator>
        </extensionElements>
      </humanTask>
      <humanTask id="sid-561EBE4C-62C7-4CA1-8166-268008AC88A5" name="Vacuum &amp; clean room" flowable:assignee="${initiator}">
        <extensionElements>
          <modeler:flowable-idm-initiator xmlns:modeler="http://flowable.org/modeler"><![CDATA[true]]></modeler:flowable-idm-initiator>
        </extensionElements>
      </humanTask>
      <humanTask id="sid-E68CF652-4E19-49C8-AE4D-72D45102E626" name="Put new flowers (if flowers are old)" flowable:assignee="${initiator}">
        <extensionElements>
          <modeler:flowable-idm-initiator xmlns:modeler="http://flowable.org/modeler"><![CDATA[true]]></modeler:flowable-idm-initiator>
        </extensionElements>
      </humanTask>
      <milestone id="sid-E76CAA66-ECF2-4613-B7E6-0E7B0403A186" name="Room is ready for new guests"></milestone>
      <task id="sid-CF5E5A2A-4B8E-4D07-8FCE-1624F9E0E448" name="Set room as cleaned" flowable:type="script" flowable:scriptFormat="groovy">
        <extensionElements>
          <flowable:field name="script">
            <flowable:string><![CDATA[println "Room " + (planItemInstance.getVariable("roomNumber") != null ? roomNumber + " " : "") + "is ready !!"
planItemInstance.setVariable("roomAvailable", true)]]></flowable:string>
          </flowable:field>
        </extensionElements>
      </task>
      <exitCriterion id="sid-8073E7B6-17B5-4BF2-9FDE-ECEBF893A0BD" sentryRef="sentry9"></exitCriterion>
    </casePlanModel>
  </case>
```

---

<div class="post-metadata">

**Author:** ![cdeneux](https://yyz1.discourse-cdn.com/flex035/user_avatar/forum.flowable.org/cdeneux/32/186_2.png) [@cdeneux](https://forum.flowable.org/u/cdeneux)\
**Post date:** [April 5, 2019, 6:55am UTC](https://forum.flowable.org/t/cmmn-human-task-activated-but-not-expected/3468/7 "2019-04-05T06:55:20Z")

</div>

Hi @joram,

Can you help me on this topic ? Where is my mistake ?

Thanks for your help,  
Christophe

---

<div class="post-metadata">

**Author:** ![joram](https://yyz1.discourse-cdn.com/flex035/user_avatar/forum.flowable.org/joram/32/26_2.png) [@joram](https://forum.flowable.org/u/joram)\
**Post date:** [April 10, 2019, 10:11am UTC](https://forum.flowable.org/t/cmmn-human-task-activated-but-not-expected/3468/8 "2019-04-10T10:11:02Z")

</div>

Hi @cdeneux (and sorry for the delay):

I debugged your xml: the problem is that milestones, when activated, throw an occurred event (and not a complete). Changing the sentry to

> \<sentry id=“sentry5”\>  
> \<planItemOnPart id=“sentryOnPart3” sourceRef=“planItem3”\>  
> \<standardEvent\>occur\</standardEvent\>  
> \</planItemOnPart\>  
> \</sentry\>

fixes that (changing completed → occur).

The test code I used to verify:

> cmmnRuntimeService.createCaseInstanceBuilder().caseDefinitionKey(“hotelRoomCleaning”).start();  
> cmmnRuntimeService.createPlanItemInstanceQuery()  
> .includeEnded().orderByName().asc().list()  
> .forEach(p -\> System.out.println(p.getName() + “(” + p.getPlanItemDefinitionType() + " / " + p.getState() + “)”));

Which produces

> Guest has left hotel(usereventlistener / available)  
> Put clean towels and sheets(humantask / available)  
> Put new flowers (if flowers are old)(humantask / available)  
> Room is ready for new guests(milestone / available)  
> Room must be cleaned(milestone / available)  
> Room unused for one month(timereventlistener / available)  
> Set room as cleaned(scriptservicetask / available)  
> Take out dirty sheets and towels(humantask / available)  
> Vacuum & clean room(humantask / available)

Then, triggering the user event :

> UserEventListenerInstance userEventListenerInstance = cmmnRuntimeService.createUserEventListenerInstanceQuery().singleResult();  
> cmmnRuntimeService.completeUserEventListenerInstance(userEventListenerInstance.getId());
> 
> cmmnRuntimeService.createPlanItemInstanceQuery().includeEnded().orderByName().asc().list()  
> .forEach(p -\> System.out.println(p.getName() + “(” + p.getPlanItemDefinitionType() + " / " + p.getState() + “)”));

Which gives as output

> Guest has left hotel(usereventlistener / completed)  
> Put clean towels and sheets(humantask / available)  
> Put new flowers (if flowers are old)(humantask / available)  
> Room is ready for new guests(milestone / available)  
> Room must be cleaned(milestone / completed)  
> Room unused for one month(timereventlistener / terminated)  
> Set room as cleaned(scriptservicetask / available)  
> Take out dirty sheets and towels(humantask / active)  
> Vacuum & clean room(humantask / available)

And to verify the tasks:

> cmmnTaskService.createTaskQuery().orderByTaskName().asc().list().forEach(t -\> System.out.println(t.getName()));

> Take out dirty sheets and towels

---

<div class="post-metadata">

**Author:** ![cdeneux](https://yyz1.discourse-cdn.com/flex035/user_avatar/forum.flowable.org/cdeneux/32/186_2.png) [@cdeneux](https://forum.flowable.org/u/cdeneux)\
**Post date:** [April 10, 2019, 3:41pm UTC](https://forum.flowable.org/t/cmmn-human-task-activated-but-not-expected/3468/9 "2019-04-10T15:41:05Z")

</div>

A great thanks @joram for your support. All works fine now.

Regards,  
Christophe
