Created
April 20, 2020 12:27
-
-
Save vporoshok/d99c84a3f1e2405b2434bfbc6ab897cf to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package model | |
import ( | |
"time" | |
uuid "github.com/satori/go.uuid" | |
) | |
// EventKind тип события | |
// | |
//go:generate enumer -json -transform=snake -type=EventKind -trimprefix=EventKind -output=events_kind_string.go $GOFILE | |
type EventKind int8 | |
// Типы событий | |
const ( | |
EventKindTaskCreated EventKind = iota | |
EventKindTaskInProgress | |
EventKindTaskReassigned | |
EventKindTaskOverdue | |
EventKindTaskDone | |
EventKindTaskCanceled | |
) | |
// Event общие поля любого события системы | |
type Event struct { | |
Kind EventKind `json:"kind"` // Тип события вида "task_created" | |
Region string `json:"region"` // Код региона вида "03" | |
DepartmentID string `json:"departmentId"` // Внутренний идентификатор ведомства | |
Timestamp time.Time `json:"timestamp"` // Время события | |
} | |
// TaskEvent события, связанные с пользовательскими задачами | |
type TaskEvent struct { | |
Event | |
TaskID uuid.UUID `json:"taskId"` // Идентификатор задачи | |
} | |
// TaskCreated — создания задачи | |
type TaskCreated struct { | |
TaskEvent | |
TemplateName string `json:"templateName"` // Название шаблона (совпадает с названием услуги) | |
InstanceID uuid.UUID `json:"instanceId"` // Идентификатор экземпляра процесса | |
ClaimID string `json:"claimId"` // Идентификатор заявления | |
TaskName string `json:"taskName"` // Название задачи | |
DueDate time.Time `json:"dueDate"` // Срок исполнения задачи | |
PerformerGroups []uuid.UUID `json:"performerGroups"` // Идентификаторы групп исполнителей | |
PerformerGroupNames []string `json:"performerGroupNames"` // Названия групп исполнителей () | |
Performers []uuid.UUID `json:"performers"` // Идентификаторы исполнителей | |
PerformerNames []string `json:"performerNames"` // ФИО исполнителей | |
} | |
// TaskInProgress — задача взята в работу | |
type TaskInProgress struct { | |
TaskEvent | |
Performer uuid.UUID `json:"performer"` // Идентификатор пользователя, взявшего задачу в работу | |
PerformerName string `json:"performerName"` // ФИО пользователя, взявшего задачу в работу | |
} | |
// TaskReassigned — задача переназначена | |
type TaskReassigned struct { | |
TaskEvent | |
Performer uuid.UUID `json:"performer"` // Идентификатор пользователя, на которого переназначена задача | |
PerformerName string `json:"performerName"` // ФИО пользователя, на которого переназначена задача | |
ReassignedBy uuid.UUID `json:"reassignedBy"` // Идентификатор пользователя, переназначившего задачу | |
ReassignedByName string `json:"reassignedByName"` // ФИО пользователя, переназначившего задачу | |
} | |
// TaskOverdue — задача просрочена | |
type TaskOverdue struct { | |
TaskEvent | |
} | |
// TaskDone — задача выполнена | |
type TaskDone struct { | |
TaskEvent | |
Performer uuid.UUID `json:"performer"` // Идентификатор пользователя, выполнившего задачу | |
PerformerName string `json:"performerName"` // ФИО пользователя, выполнившего задачу | |
} | |
// TaskCanceledReason причина отмены задачи | |
// | |
//go:generate enumer -json -transform=snake -type=TaskCanceledReason -trimprefix=TaskCanceledReason -output=events_task_canceled_reason_string.go $GOFILE | |
type TaskCanceledReason int8 | |
const ( | |
// TaskCanceledReasonEscalation — эскалация при просрочке | |
TaskCanceledReasonEscalation TaskCanceledReason = iota | |
// TaskCanceledReasonInterrupt — процесс прерван пользователем | |
TaskCanceledReasonInterrupt | |
// TaskCanceledReasonCondition — выполнены условия перехода для задачи множественного исполнения | |
TaskCanceledReasonCondition | |
// TaskCanceledReasonError — процесс завершился с ошибкой | |
TaskCanceledReasonError | |
) | |
// TaskCanceled — задача отменена | |
type TaskCanceled struct { | |
TaskEvent | |
Reason TaskCanceledReason `json:"reason"` // Причина отмены задачи | |
InterruptedBy *uuid.UUID `json:"interruptedBy,omitempty"` // Идентификатор прервавшего ползователя | |
InterruptedByName *string `json:"interruptedByName,omitempty"` // ФИО прервавшего ползователя | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment