# Как получить текущее состояние процесса?

**URL:** <https://forum.reunico.com/t/kak-poluchit-tekushhee-sostoyanie-proczessa/88>\
**Category:** Camunda 7\
**Created:** [09.Июнь.2021 17:03:44 UTC](https://forum.reunico.com/t/kak-poluchit-tekushhee-sostoyanie-proczessa/88 "2021-06-09T17:03:44Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![Dmitry.Raz](https://forum.reunico.com/user_avatar/forum.reunico.com/dmitry.raz/32/21_2.png) [@Dmitry.Raz](https://forum.reunico.com/u/Dmitry.Raz)\
**Post date:** [09.Июнь.2021 17:03:44 UTC](https://forum.reunico.com/t/kak-poluchit-tekushhee-sostoyanie-proczessa/88/1 "2021-06-09T17:03:44Z")

</div>

всем привет!

интересует, каким образом можно получить текущее состояние процесса? например, как используя API камунды я могу понять, что в на приведенной модели процесса я нахожусь в подпроцессе, выделенным зеленым цветом?

Camunda 7.13 (встроенный в spring boot)

![diagram_1](https://forum.reunico.com/images/transparent.png)

---

<div class="post-metadata">

**Author:** ![Mstislav](https://forum.reunico.com/user_avatar/forum.reunico.com/mstislav/32/102_2.png) [@Mstislav](https://forum.reunico.com/u/Mstislav)\
**Post date:** [09.Июнь.2021 17:09:59 UTC](https://forum.reunico.com/t/kak-poluchit-tekushhee-sostoyanie-proczessa/88/2 "2021-06-09T17:09:59Z")

</div>

@Dmitry.Raz

[https://docs.camunda.org/manual/7.15/reference/rest/process-instance/get-activity-instances/](https://docs.camunda.org/manual/7.15/reference/rest/process-instance/get-activity-instances/)

Аналог есть в Java API.

Система вернет объект, содержащий текущие активности, в т.ч. с учетом дочерних/вложенных.

```auto
{
  "id": "eca75c6b-f70c-11e9-8777-e4a7a094a9d6",
  "parentActivityInstanceId": null,
  "activityId": "invoice:2:e9d77375-f70c-11e9-8777-e4a7a094a9d6",
  "activityType": "processDefinition",
  "processInstanceId": "eca75c6b-f70c-11e9-8777-e4a7a094a9d6",
  "processDefinitionId": "invoice:2:e9d77375-f70c-11e9-8777-e4a7a094a9d6",
  "childActivityInstances": [
    {
      "id": "approveInvoice:eca89509-f70c-11e9-8777-e4a7a094a9d6",
      "parentActivityInstanceId": "eca75c6b-f70c-11e9-8777-e4a7a094a9d6",
      "activityId": "approveInvoice",
      "activityType": "userTask",
      "processInstanceId": "eca75c6b-f70c-11e9-8777-e4a7a094a9d6",
      "processDefinitionId": "invoice:2:e9d77375-f70c-11e9-8777-e4a7a094a9d6",
      "childActivityInstances": [],
      "childTransitionInstances": [],
      "executionIds": [
        "eca75c6b-f70c-11e9-8777-e4a7a094a9d6"
      ],
      "activityName": "Approve Invoice",
      "incidentIds": [
        "648d7e21-f71c-11e9-a725-e4a7a094a9d6"
      ],
      "incidents": [
        {
          "id": "648d7e21-f71c-11e9-a725-e4a7a094a9d6",
          "activityId": "AttachedTimerBoundaryEvent"
        }
      ]
    }
  ],
  "childTransitionInstances": [],
  "executionIds": [
    "eca75c6b-f70c-11e9-8777-e4a7a094a9d6"
  ],
  "activityName": "Invoice Receipt",
  "incidentIds": null,
  "incidents": null
}

```

Позвольте полюбопытствовать, для каких целей это нужно?

---

<div class="post-metadata">

**Author:** ![Dmitry.Raz](https://forum.reunico.com/user_avatar/forum.reunico.com/dmitry.raz/32/21_2.png) [@Dmitry.Raz](https://forum.reunico.com/u/Dmitry.Raz)\
**Post date:** [09.Июнь.2021 17:21:51 UTC](https://forum.reunico.com/t/kak-poluchit-tekushhee-sostoyanie-proczessa/88/3 "2021-06-09T17:21:51Z")

</div>

мстислав, я отправляю сообщение в камунду с помощью java api:

> runtimeService.createMessageCorrelation().correlate();

если процесс находится вне границ подпроцесса, к которому подкручен получатель сообщения, то выдается эксепшен и транзакция откатывается.

хочу перед отправкой проверять, находится ли токен в подпроцессе

---

<div class="post-metadata">

**Author:** ![Mstislav](https://forum.reunico.com/user_avatar/forum.reunico.com/mstislav/32/102_2.png) [@Mstislav](https://forum.reunico.com/u/Mstislav)\
**Post date:** [09.Июнь.2021 17:36:59 UTC](https://forum.reunico.com/t/kak-poluchit-tekushhee-sostoyanie-proczessa/88/4 "2021-06-09T17:36:59Z")

</div>

> [@Dmitry.Raz](#):
>
> хочу перед отправкой проверять, находится ли токен в подпроцессе

Зачем такие сложности? Используйте вместо correlate() вызов correlateAll() или correlateAllWithResultAndVariables() - они не возвращают исключение, если отсутствует событие-получатель сообщения.
