92
93
// group by namespaceID + execution businessID + archetypeID
94
>
archetypeID := chasm.WorkflowArchetypeID
api.go
95
>
if hasArchetypeID, ok := deserializedTask.(tasks.HasArchetypeID); ok {
96
archetypeID = hasArchetypeID.GetArchetypeID()
97
}
98
>
if archetypeID == chasm.UnspecifiedArchetypeID {
api.go
99
archetypeID = chasm.WorkflowArchetypeID
100
}
101
>
groupKey := taskGroupKey{
api.go
102
>
namespaceID: deserializedTask.GetNamespaceID(),
103
>
businessID: deserializedTask.GetWorkflowID(),
104
>
archetypeID: archetypeID,
105
>
}
106
>
107
>
if _, ok := taskGroups[groupKey]; !ok {
108
>
taskGroups[groupKey] = make(map[tasks.Category][]tasks.Task, 1)
109
>
}
110
111
>
taskGroups[groupKey][category] = append(taskGroups[groupKey][category], deserializedTask)
api.go
112
}
113
114
>
for groupKey, taskGroup := range taskGroups {
api.go
115
>
err := shardContext.AddTasks(ctx, &persistence.AddHistoryTasksRequest{
116
>
ShardID: shardContext.GetShardID(),
117
>
RangeID: shardContext.GetRangeID(),
118
>
NamespaceID: groupKey.namespaceID,
119
>
WorkflowID: groupKey.businessID,
120
>
ArchetypeID: groupKey.archetypeID,
121
>
Tasks: taskGroup,
122
>
})
123
>
if err != nil {
124
return nil, err
125
}