Read these :
As it stands, workflow versioning looks hard and messy ( sorry ).
Each time you change the workflow, you need to create a workflow that essentially contains code for old workflow and the new one separated with a series of if() conditions .
Why wasn’t Temporal designed so that newWorker has an extra argument which acts as the version
Worker worker = factory.newWorker(TASK_QUEUE,1); //version 1. This worker will only pick up tasks from TASK_QUEUE if their version is 1
Multiple workers in multiple processes/JVMs can run at the same time. each will be self-sufficient and independent. Each will be oblivious about the existence of other version workflows with different logic.
( This is what some other Orchestration Engines like Activevos do )
( Or did I understand the Temporal versioning mechanism incorrectly? )