Documentation ¶
Index ¶
- type ActivatedJob
- type BpmnEngine
- type BpmnEngineError
- type BpmnEngineState
- func (state *BpmnEngineState) AddEventExporter(exporter exporter.EventExporter)
- func (state *BpmnEngineState) AddTaskHandler(taskId string, handler func(job ActivatedJob))
- func (state *BpmnEngineState) CreateAndRunInstance(processKey int64, variableContext map[string]interface{}) (*ProcessInstanceInfo, error)
- func (state *BpmnEngineState) CreateInstance(processKey int64, variableContext map[string]interface{}) (*ProcessInstanceInfo, error)
- func (state *BpmnEngineState) FindProcessInstanceById(processInstanceKey int64) *ProcessInstanceInfo
- func (state *BpmnEngineState) GetMessageSubscriptions() []MessageSubscription
- func (state *BpmnEngineState) GetName() string
- func (state *BpmnEngineState) GetProcessInstances() []*ProcessInstanceInfo
- func (state *BpmnEngineState) GetTimersScheduled() []Timer
- func (state *BpmnEngineState) LoadFromBytes(xmlData []byte) (*ProcessInfo, error)
- func (state *BpmnEngineState) LoadFromFile(filename string) (*ProcessInfo, error)
- func (state *BpmnEngineState) PublishEventForInstance(processInstanceKey int64, messageName string, variables map[string]interface{}) error
- func (state *BpmnEngineState) RunOrContinueInstance(processInstanceKey int64) (*ProcessInstanceInfo, error)
- type MessageSubscription
- type ProcessInfo
- type ProcessInstance
- type ProcessInstanceInfo
- func (pii *ProcessInstanceInfo) GetCreatedAt() time.Time
- func (pii *ProcessInstanceInfo) GetInstanceKey() int64
- func (pii *ProcessInstanceInfo) GetProcessInfo() *ProcessInfo
- func (pii *ProcessInstanceInfo) GetState() process_instance.State
- func (pii *ProcessInstanceInfo) GetVariable(key string) interface{}
- func (pii *ProcessInstanceInfo) SetVariable(key string, value interface{})
- type Timer
- type TimerState
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type ActivatedJob ¶
type ActivatedJob interface { ProcessInstance // GetKey the key, a unique identifier for the job GetKey() int64 // GetProcessInstanceKey the job's process instance key GetProcessInstanceKey() int64 // GetBpmnProcessId Retrieve id of the job process definition GetBpmnProcessId() string // GetProcessDefinitionVersion Retrieve version of the job process definition GetProcessDefinitionVersion() int32 // GetProcessDefinitionKey Retrieve key of the job process definition GetProcessDefinitionKey() int64 // GetElementId Get element id of the job GetElementId() string // Fail does set the state the worker missed completing the job // Fail and Complete mutual exclude each other Fail(reason string) // Complete does set the state the worker successfully completing the job // Fail and Complete mutual exclude each other Complete() }
ActivatedJob represents an abstraction for the activated job don't forget to call Fail or Complete when your task worker job is complete or not.
type BpmnEngine ¶
type BpmnEngine interface { LoadFromFile(filename string) (*ProcessInfo, error) LoadFromBytes(xmlData []byte) (*ProcessInfo, error) AddTaskHandler(taskId string, handler func(job ActivatedJob)) CreateInstance(processKey int64, variableContext map[string]interface{}) (*ProcessInstanceInfo, error) CreateAndRunInstance(processKey int64, variableContext map[string]interface{}) (*ProcessInstanceInfo, error) RunOrContinueInstance(processInstanceKey int64) (*ProcessInstanceInfo, error) GetName() string GetProcessInstances() []*ProcessInstanceInfo FindProcessInstanceById(processInstanceKey int64) *ProcessInstanceInfo }
type BpmnEngineError ¶ added in v0.2.2
type BpmnEngineError struct {
Msg string
}
func (*BpmnEngineError) Error ¶ added in v0.2.2
func (e *BpmnEngineError) Error() string
type BpmnEngineState ¶
type BpmnEngineState struct {
// contains filtered or unexported fields
}
func New ¶
func New(name string) BpmnEngineState
New creates an engine with an arbitrary name of the engine; useful in case you have multiple ones, in order to distinguish them.
func (*BpmnEngineState) AddEventExporter ¶ added in v0.2.0
func (state *BpmnEngineState) AddEventExporter(exporter exporter.EventExporter)
AddEventExporter registers an EventExporter instance
func (*BpmnEngineState) AddTaskHandler ¶
func (state *BpmnEngineState) AddTaskHandler(taskId string, handler func(job ActivatedJob))
AddTaskHandler registers a handler function to be called for service tasks with a given taskId
func (*BpmnEngineState) CreateAndRunInstance ¶
func (state *BpmnEngineState) CreateAndRunInstance(processKey int64, variableContext map[string]interface{}) (*ProcessInstanceInfo, error)
CreateAndRunInstance creates a new instance and executes it immediately. The provided variableContext can be nil or refers to a variable map, which is provided to every service task handler function.
func (*BpmnEngineState) CreateInstance ¶
func (state *BpmnEngineState) CreateInstance(processKey int64, variableContext map[string]interface{}) (*ProcessInstanceInfo, error)
CreateInstance creates a new instance for a process with given processKey will return (nil, nil), when no process with given was found
func (*BpmnEngineState) FindProcessInstanceById ¶
func (state *BpmnEngineState) FindProcessInstanceById(processInstanceKey int64) *ProcessInstanceInfo
FindProcessInstanceById searches for a give processInstanceKey and returns the corresponding ProcessInstanceInfo otherwise nil
func (*BpmnEngineState) GetMessageSubscriptions ¶
func (state *BpmnEngineState) GetMessageSubscriptions() []MessageSubscription
GetMessageSubscriptions the list of message subscriptions hint: each intermediate message catch event, will create such an active subscription, when a processes instance reaches such an element.
func (*BpmnEngineState) GetName ¶
func (state *BpmnEngineState) GetName() string
GetName returns the name of the engine, only useful in case you control multiple ones
func (*BpmnEngineState) GetProcessInstances ¶
func (state *BpmnEngineState) GetProcessInstances() []*ProcessInstanceInfo
GetProcessInstances returns a list of instance information.
func (*BpmnEngineState) GetTimersScheduled ¶ added in v0.2.4
func (state *BpmnEngineState) GetTimersScheduled() []Timer
GetTimersScheduled the list of all scheduled timers in the engine A Timer is created, when a process instance reaches a Timer Intermediate Catch Event element and expresses a timestamp in the future
func (*BpmnEngineState) LoadFromBytes ¶
func (state *BpmnEngineState) LoadFromBytes(xmlData []byte) (*ProcessInfo, error)
LoadFromBytes loads a given BPMN file by xmlData byte array into the engine and returns ProcessInfo details for the deployed workflow
func (*BpmnEngineState) LoadFromFile ¶
func (state *BpmnEngineState) LoadFromFile(filename string) (*ProcessInfo, error)
LoadFromFile loads a given BPMN file by filename into the engine and returns ProcessInfo details for the deployed workflow
func (*BpmnEngineState) PublishEventForInstance ¶
func (state *BpmnEngineState) PublishEventForInstance(processInstanceKey int64, messageName string, variables map[string]interface{}) error
PublishEventForInstance publishes a message with a given name and also adds variables to the process instance, which fetches this event
func (*BpmnEngineState) RunOrContinueInstance ¶
func (state *BpmnEngineState) RunOrContinueInstance(processInstanceKey int64) (*ProcessInstanceInfo, error)
RunOrContinueInstance runs or continues a process instance by a given processInstanceKey. returns the process instances, when found does nothing, if process is already in ProcessInstanceCompleted State returns nil, when no process instance was found Additionally, every time this method is called, former completed instances are 'garbage collected'.
type MessageSubscription ¶
type ProcessInfo ¶
type ProcessInfo struct { BpmnProcessId string // The ID as defined in the BPMN file Version int32 // A version of the process, default=1, incremented, when another process with the same ID is loaded ProcessKey int64 // The engines key for this given process with version // contains filtered or unexported fields }
type ProcessInstance ¶
type ProcessInstance interface { GetProcessInfo() *ProcessInfo GetInstanceKey() int64 // GetVariable from the process instance's variable context GetVariable(key string) interface{} // SetVariable to the process instance's variable context SetVariable(key string, value interface{}) GetCreatedAt() time.Time GetState() process_instance.State }
type ProcessInstanceInfo ¶
type ProcessInstanceInfo struct {
// contains filtered or unexported fields
}
func (*ProcessInstanceInfo) GetCreatedAt ¶
func (pii *ProcessInstanceInfo) GetCreatedAt() time.Time
func (*ProcessInstanceInfo) GetInstanceKey ¶
func (pii *ProcessInstanceInfo) GetInstanceKey() int64
func (*ProcessInstanceInfo) GetProcessInfo ¶
func (pii *ProcessInstanceInfo) GetProcessInfo() *ProcessInfo
func (*ProcessInstanceInfo) GetState ¶
func (pii *ProcessInstanceInfo) GetState() process_instance.State
GetState returns one of [READY, ACTIVE, COMPLETED, FAILED] State diagram:
┌─────┐ │Ready│ └──┬──┘ | ┌───▽──┐ │Active│ └───┬──┘ |
┌────▽────┐ │Completed│ └─────────┘
func (*ProcessInstanceInfo) GetVariable ¶
func (pii *ProcessInstanceInfo) GetVariable(key string) interface{}
func (*ProcessInstanceInfo) SetVariable ¶
func (pii *ProcessInstanceInfo) SetVariable(key string, value interface{})
type Timer ¶
type Timer struct { ElementId string ElementInstanceKey int64 ProcessKey int64 ProcessInstanceKey int64 State TimerState CreatedAt time.Time DueAt time.Time Duration time.Duration }
Timer is created, when a process instance reaches a Timer Intermediate Message Event. The logic is simple: CreatedAt + Duration = DueAt The State is one of [ TimerCreated, TimerTriggered, TimerCancelled ]
type TimerState ¶
type TimerState string
const TimerCancelled TimerState = "CANCELLED"
const TimerCreated TimerState = "CREATED"
const TimerTriggered TimerState = "TRIGGERED"