«Есть ли у cadence понятие «эволюция рабочего процесса»»?
Другими словами, у меня есть «актор с отслеживанием состояния», который моделирует клиента. Первоначально у клиента есть два поля с некоторыми методами сигналов, которые их изменяют, некоторые методы запросов, которые извлекают состояние, и некоторый основной рабочий процесс для этого актора. Допустим у меня 10 таких экземпляров и они долгожители.
Позже я хочу добавить третье поле и, возможно, еще один сигнальный метод. Что я могу использовать?
Здесь может помочь управление версиями с помощью Cadence. Вот документация.
Из документации, как пример, строчка вроде ниже
err := workflow.ExecuteActivity(ctx, ActivityA, data).Get(ctx, &result1)
становится
var err error
v := workflow.GetVersion(ctx, "Step1", workflow.DefaultVersion, 1)
if v == workflow.DefaultVersion {
err = workflow.ExecuteActivity(ctx, ActivityA, data).Get(ctx, &result1)
} else {
err = workflow.ExecuteActivity(ctx, ActivityC, data).Get(ctx, &result1)
}
если у вас более 2 версий, это будет выглядеть так:
v := workflow.GetVersion(ctx, "Step1", workflow.DefaultVersion, 2)
if v == workflow.DefaultVersion {
err = workflow.ExecuteActivity(ctx, ActivityA, data).Get(ctx, &result1)
} else if v == 1 {
err = workflow.ExecuteActivity(ctx, ActivityC, data).Get(ctx, &result1)
} else {
err = workflow.ExecuteActivity(ctx, ActivityD, data).Get(ctx, &result1)
}
и так далее. Вы можете обратиться к документации для более подробной информации.
У меня был другой пост для этой концепции управления версиями: stackoverflow.com/questions/65007136/…