How to execute a process from completed Signals

In my application, when a process is created it always waits for a signal and the signal value is a number.
When my application receives the number from another source, it creates the signal and the process is matured.
My application is not going to receive the same number again from any source system on the same day, but the application can generate similar processes which will wait for the same signal on the same day.

My question is can the subsequent processes be matured based on a signal which is already completed?

@sandeepsamal You can consider using restart process instance option.

Step 1: Deploy this model and test: SignalStartProcess.bpmn (3.1 KB)

Step 2: Start a process with signal name:

curl --location --request POST 'http://localhost:8086/engine-rest/signal' \
--header 'Authorization: Basic ZGVtbzpkZW1v' \
--header 'Content-Type: application/json' \
--data-raw '{
  "name": "PROCESS_START",
  "variables": {
    "newTimePeriodInMonth": {
      "value": 24
    }
  }
}'

Step 3: Log into task list and complete the user tasks, then process will end.

Step 4: Verify process completion and variables in cockpit like below:

Step 5: Restart a process instance using completed process activityID with same process instance data like below:

curl --location --request POST 'http://localhost:8086/engine-rest/process-definition/SignalStartProcess:1:f5987f71-e656-11eb-a509-b226a514a82b/restart' \
--header 'Authorization: Basic ZGVtbzpkZW1v' \
--header 'Content-Type: application/json' \
--data-raw '{
  "instructions": [
    {
      "type": "startAfterActivity",
      "activityId": "StartEvent_1"
    }
  ],
  "processInstanceIds": [
    "6909b8be-e657-11eb-a509-b226a514a82b"
  ],
  "initialVariables" : true,
  "skipCustomListeners" : true,
  "withoutBusinessKey" : true
}'

References:

Thanks a lot. Process can be restarted, But my question is how can the process be completed based on a signal which is already completed.

Check the second curl command where i’m restarting process instance by referencing the previously completed process instance using processInstanceIds. So it copies the details from the completed process instance.

Hi @sandeepsamal,

Can you please explain your needs in a detailed example.