BPMN20

package
v0.0.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 31, 2025 License: MIT Imports: 3 Imported by: 0

Documentation

Overview

Package BPMN20 contains structs and interfaces to parse BPMN (XML) files, based on specification BPMN v2.0.2, see https://www.omg.org/spec/BPMN/

Index

Constants

View Source
const (
	Process                ElementType = "PROCESS"
	SubProcess             ElementType = "SUB_PROCESS"
	StartEvent             ElementType = "START_EVENT"
	EndEvent               ElementType = "END_EVENT"
	ServiceTask            ElementType = "SERVICE_TASK"
	UserTask               ElementType = "USER_TASK"
	ParallelGateway        ElementType = "PARALLEL_GATEWAY"
	ExclusiveGateway       ElementType = "EXCLUSIVE_GATEWAY"
	IntermediateCatchEvent ElementType = "INTERMEDIATE_CATCH_EVENT"
	IntermediateThrowEvent ElementType = "INTERMEDIATE_THROW_EVENT"
	EventBasedGateway      ElementType = "EVENT_BASED_GATEWAY"
	InclusiveGateway       ElementType = "INCLUSIVE_GATEWAY"

	SequenceFlow ElementType = "SEQUENCE_FLOW"

	Unspecified GatewayDirection = "Unspecified"
	Converging  GatewayDirection = "Converging"
	Diverging   GatewayDirection = "Diverging"
	Mixed       GatewayDirection = "Mixed"
)

Variables

This section is empty.

Functions

func Ptr

func Ptr[T any](v T) *T

Types

type BaseElement

type BaseElement interface {
	GetId() string
	GetName() string
	GetIncomingAssociation() []string
	GetOutgoingAssociation() []string
	GetType() ElementType
}

func FindBaseElementsById

func FindBaseElementsById(processElement ProcessElement, id string) (elements []*BaseElement)

type ElementType

type ElementType string

type GatewayDirection

type GatewayDirection string

type GatewayElement

type GatewayElement interface {
	BaseElement
	IsParallel() bool
	IsExclusive() bool
	IsInclusive() bool
}

type ProcessElement

type ProcessElement interface {
	BaseElement
	GetStartEvents() []TStartEvent
	GetEndEvents() []TEndEvent
	GetSequenceFlows() []TSequenceFlow
	GetServiceTasks() []TServiceTask
	GetUserTasks() []TUserTask
	GetParallelGateway() []TParallelGateway
	GetExclusiveGateway() []TExclusiveGateway
	GetIntermediateCatchEvent() []TIntermediateCatchEvent
	GetIntermediateTrowEvent() []TIntermediateThrowEvent
	GetEventBasedGateway() []TEventBasedGateway
	GetSubProcess() []TSubProcess
	GetInclusiveGateway() []TInclusiveGateway
}

type TActivity

type TActivity struct {
	TFlowNode
	IsForCompensation  bool `xml:"isForCompensation,attr"`
	StartQuantity      int  `xml:"startQuantity,attr" default:"1"`
	CompletionQuantity int  `xml:"completionQuantity,attr"`
}

TActivity is an "abstract" struct

type TBaseElement

type TBaseElement struct {
	Id            string `xml:"id,attr"`
	Documentation string `xml:"documentation"`
}

TBaseElement is an "abstract" struct

type TCallableElement

type TCallableElement struct {
	TRootElement
	Name string `xml:"name,attr"`
}

type TCatchEvent

type TCatchEvent struct {
	TEvent
}

TCatchEvent is an "abstract" struct

type TDefinitions

type TDefinitions struct {
	Id                 string     `xml:"id,attr"`
	Name               string     `xml:"name,attr"`
	TargetNamespace    string     `xml:"targetNamespace,attr"`
	ExpressionLanguage string     `xml:"expressionLanguage,attr"`
	TypeLanguage       string     `xml:"typeLanguage,attr"`
	Exporter           string     `xml:"exporter,attr"`
	ExporterVersion    string     `xml:"exporterVersion,attr"`
	Process            TProcess   `xml:"process"`
	Messages           []TMessage `xml:"message"`
}

type TEndEvent

type TEndEvent struct {
	TThrowEvent
}

func (TEndEvent) GetId

func (endEvent TEndEvent) GetId() string

func (TEndEvent) GetIncomingAssociation

func (endEvent TEndEvent) GetIncomingAssociation() []string

func (TEndEvent) GetName

func (endEvent TEndEvent) GetName() string

func (TEndEvent) GetOutgoingAssociation

func (endEvent TEndEvent) GetOutgoingAssociation() []string

func (TEndEvent) GetType

func (endEvent TEndEvent) GetType() ElementType

type TEvent

type TEvent struct {
	TFlowNode
}

TEvent is an "abstract" struct

type TEventBasedGateway

type TEventBasedGateway struct {
	TGateway
}

func (TEventBasedGateway) GetId

func (eventBasedGateway TEventBasedGateway) GetId() string

func (TEventBasedGateway) GetIncomingAssociation

func (eventBasedGateway TEventBasedGateway) GetIncomingAssociation() []string

func (TEventBasedGateway) GetName

func (eventBasedGateway TEventBasedGateway) GetName() string

func (TEventBasedGateway) GetOutgoingAssociation

func (eventBasedGateway TEventBasedGateway) GetOutgoingAssociation() []string

func (TEventBasedGateway) GetType

func (eventBasedGateway TEventBasedGateway) GetType() ElementType

func (TEventBasedGateway) IsExclusive

func (eventBasedGateway TEventBasedGateway) IsExclusive() bool

func (TEventBasedGateway) IsInclusive

func (eventBasedGateway TEventBasedGateway) IsInclusive() bool

func (TEventBasedGateway) IsParallel

func (eventBasedGateway TEventBasedGateway) IsParallel() bool

type TEventDefinition

type TEventDefinition struct {
	TRootElement
}

TEventDefinition is an "abstract" struct

type TExclusiveGateway

type TExclusiveGateway struct {
	TGateway
}

func (TExclusiveGateway) GetId

func (exclusiveGateway TExclusiveGateway) GetId() string

func (TExclusiveGateway) GetIncomingAssociation

func (exclusiveGateway TExclusiveGateway) GetIncomingAssociation() []string

func (TExclusiveGateway) GetName

func (exclusiveGateway TExclusiveGateway) GetName() string

func (TExclusiveGateway) GetOutgoingAssociation

func (exclusiveGateway TExclusiveGateway) GetOutgoingAssociation() []string

func (TExclusiveGateway) GetType

func (exclusiveGateway TExclusiveGateway) GetType() ElementType

func (TExclusiveGateway) IsExclusive

func (exclusiveGateway TExclusiveGateway) IsExclusive() bool

func (TExclusiveGateway) IsInclusive

func (exclusiveGateway TExclusiveGateway) IsInclusive() bool

func (TExclusiveGateway) IsParallel

func (exclusiveGateway TExclusiveGateway) IsParallel() bool

type TExpression

type TExpression struct {
	Text string `xml:",innerxml"`
}

type TFlowElement

type TFlowElement struct {
	TBaseElement
	Name string `xml:"name,attr"`
}

type TFlowNode

type TFlowNode struct {
	TFlowElement
	IncomingAssociation []string `xml:"incoming"`
	OutgoingAssociation []string `xml:"outgoing"`
}

type TGateway

type TGateway struct {
	TFlowNode
	GatewayDirection GatewayDirection `xml:"gatewayDirection,attr"`
}

type TInclusiveGateway

type TInclusiveGateway struct {
	TGateway
}

func (TInclusiveGateway) GetId

func (inclusiveGateway TInclusiveGateway) GetId() string

func (TInclusiveGateway) GetIncomingAssociation

func (inclusiveGateway TInclusiveGateway) GetIncomingAssociation() []string

func (TInclusiveGateway) GetName

func (inclusiveGateway TInclusiveGateway) GetName() string

func (TInclusiveGateway) GetOutgoingAssociation

func (inclusiveGateway TInclusiveGateway) GetOutgoingAssociation() []string

func (TInclusiveGateway) GetType

func (inclusiveGateway TInclusiveGateway) GetType() ElementType

func (TInclusiveGateway) IsExclusive

func (inclusiveGateway TInclusiveGateway) IsExclusive() bool

func (TInclusiveGateway) IsInclusive

func (inclusiveGateway TInclusiveGateway) IsInclusive() bool

func (TInclusiveGateway) IsParallel

func (inclusiveGateway TInclusiveGateway) IsParallel() bool

type TIntermediateCatchEvent

type TIntermediateCatchEvent struct {
	TCatchEvent
	MessageEventDefinition TMessageEventDefinition `xml:"messageEventDefinition"`
	TimerEventDefinition   TTimerEventDefinition   `xml:"timerEventDefinition"`
	LinkEventDefinition    TLinkEventDefinition    `xml:"linkEventDefinition"`
	ParallelMultiple       bool                    `xml:"parallelMultiple"`
	Output                 []extensions.TIoMapping `xml:"extensionElements>ioMapping>output"`
}

func (TIntermediateCatchEvent) GetId

func (intermediateCatchEvent TIntermediateCatchEvent) GetId() string

func (TIntermediateCatchEvent) GetIncomingAssociation

func (intermediateCatchEvent TIntermediateCatchEvent) GetIncomingAssociation() []string

func (TIntermediateCatchEvent) GetName

func (intermediateCatchEvent TIntermediateCatchEvent) GetName() string

func (TIntermediateCatchEvent) GetOutgoingAssociation

func (intermediateCatchEvent TIntermediateCatchEvent) GetOutgoingAssociation() []string

func (TIntermediateCatchEvent) GetType

func (intermediateCatchEvent TIntermediateCatchEvent) GetType() ElementType

type TIntermediateThrowEvent

type TIntermediateThrowEvent struct {
	TThrowEvent
	LinkEventDefinition TLinkEventDefinition    `xml:"linkEventDefinition"`
	Output              []extensions.TIoMapping `xml:"extensionElements>ioMapping>output"`
}

func (TIntermediateThrowEvent) GetId

func (intermediateThrowEvent TIntermediateThrowEvent) GetId() string

func (TIntermediateThrowEvent) GetIncomingAssociation

func (intermediateThrowEvent TIntermediateThrowEvent) GetIncomingAssociation() []string

func (TIntermediateThrowEvent) GetName

func (intermediateThrowEvent TIntermediateThrowEvent) GetName() string

func (TIntermediateThrowEvent) GetOutgoingAssociation

func (intermediateThrowEvent TIntermediateThrowEvent) GetOutgoingAssociation() []string

func (TIntermediateThrowEvent) GetType

func (intermediateThrowEvent TIntermediateThrowEvent) GetType() ElementType

type TLinkEventDefinition

type TLinkEventDefinition struct {
	TEventDefinition
	Name string `xml:"name,attr"`
}

type TMessage

type TMessage struct {
	TRootElement
	Name    string `xml:"name,attr"`
	ItemRef string `xml:"itemRef,attr"`
}

type TMessageEventDefinition

type TMessageEventDefinition struct {
	TEventDefinition
	MessageRef string `xml:"messageRef,attr"`
}

type TParallelGateway

type TParallelGateway struct {
	TGateway
}

func (TParallelGateway) GetId

func (parallelGateway TParallelGateway) GetId() string

func (TParallelGateway) GetIncomingAssociation

func (parallelGateway TParallelGateway) GetIncomingAssociation() []string

func (TParallelGateway) GetName

func (parallelGateway TParallelGateway) GetName() string

func (TParallelGateway) GetOutgoingAssociation

func (parallelGateway TParallelGateway) GetOutgoingAssociation() []string

func (TParallelGateway) GetType

func (parallelGateway TParallelGateway) GetType() ElementType

func (TParallelGateway) IsExclusive

func (parallelGateway TParallelGateway) IsExclusive() bool

func (TParallelGateway) IsInclusive

func (parallelGateway TParallelGateway) IsInclusive() bool

func (TParallelGateway) IsParallel

func (parallelGateway TParallelGateway) IsParallel() bool

type TProcess

type TProcess struct {
	TCallableElement
	ProcessType                  string                    `xml:"processType,attr"`
	IsClosed                     bool                      `xml:"isClosed,attr"`
	IsExecutable                 bool                      `xml:"isExecutable,attr"`
	DefinitionalCollaborationRef string                    `xml:"definitionalCollaborationRef,attr"`
	StartEvents                  []TStartEvent             `xml:"startEvent"`
	EndEvents                    []TEndEvent               `xml:"endEvent"`
	SequenceFlows                []TSequenceFlow           `xml:"sequenceFlow"`
	ServiceTasks                 []TServiceTask            `xml:"serviceTask"`
	UserTasks                    []TUserTask               `xml:"userTask"`
	SubProcesses                 []TSubProcess             `xml:"subProcess"`
	ParallelGateway              []TParallelGateway        `xml:"parallelGateway"`
	ExclusiveGateway             []TExclusiveGateway       `xml:"exclusiveGateway"`
	IntermediateCatchEvent       []TIntermediateCatchEvent `xml:"intermediateCatchEvent"`
	IntermediateTrowEvent        []TIntermediateThrowEvent `xml:"intermediateThrowEvent"`
	EventBasedGateway            []TEventBasedGateway      `xml:"eventBasedGateway"`
	InclusiveGateway             []TInclusiveGateway       `xml:"inclusiveGateway"`
}

func (TProcess) GetEndEvents

func (process TProcess) GetEndEvents() []TEndEvent

func (TProcess) GetEventBasedGateway

func (process TProcess) GetEventBasedGateway() []TEventBasedGateway

func (TProcess) GetExclusiveGateway

func (process TProcess) GetExclusiveGateway() []TExclusiveGateway

func (TProcess) GetId

func (process TProcess) GetId() string

func (TProcess) GetInclusiveGateway

func (process TProcess) GetInclusiveGateway() []TInclusiveGateway

func (TProcess) GetIncomingAssociation

func (process TProcess) GetIncomingAssociation() []string

func (TProcess) GetIntermediateCatchEvent

func (process TProcess) GetIntermediateCatchEvent() []TIntermediateCatchEvent

func (TProcess) GetIntermediateTrowEvent

func (process TProcess) GetIntermediateTrowEvent() []TIntermediateThrowEvent

func (TProcess) GetName

func (process TProcess) GetName() string

func (TProcess) GetOutgoingAssociation

func (process TProcess) GetOutgoingAssociation() []string

func (TProcess) GetParallelGateway

func (process TProcess) GetParallelGateway() []TParallelGateway

func (TProcess) GetSequenceFlows

func (process TProcess) GetSequenceFlows() []TSequenceFlow

func (TProcess) GetServiceTasks

func (process TProcess) GetServiceTasks() []TServiceTask

func (TProcess) GetStartEvents

func (process TProcess) GetStartEvents() []TStartEvent

func (TProcess) GetSubProcess

func (process TProcess) GetSubProcess() []TSubProcess

func (TProcess) GetType

func (process TProcess) GetType() ElementType

func (TProcess) GetUserTasks

func (process TProcess) GetUserTasks() []TUserTask

type TRootElement

type TRootElement struct {
	TBaseElement
}

TRootElement is an "abstract" struct

type TSequenceFlow

type TSequenceFlow struct {
	TFlowElement
	SourceRef           string        `xml:"sourceRef,attr"`
	TargetRef           string        `xml:"targetRef,attr"`
	ConditionExpression []TExpression `xml:"conditionExpression"`
}

func FindFirstSequenceFlow

func FindFirstSequenceFlow(processElement ProcessElement, sourceId string, targetId string) (result *TSequenceFlow)

FindFirstSequenceFlow returns the first flow definition for any given source and target element ID

func FindSequenceFlows

func FindSequenceFlows(processElement ProcessElement, ids []string) (ret []TSequenceFlow)

FindSequenceFlows returns all TSequenceFlow with any given `id`

func (TSequenceFlow) GetConditionExpression

func (flow TSequenceFlow) GetConditionExpression() string

GetConditionExpression returns the embedded expression. There will be a panic thrown, in case none exists!

func (TSequenceFlow) HasConditionExpression

func (flow TSequenceFlow) HasConditionExpression() bool

HasConditionExpression returns true, if there's exactly 1 expression present (as by the spec) and there's some non-whitespace-characters available

type TServiceTask

type TServiceTask struct {
	TTask
	Default            string                     `xml:"default,attr"`
	CompletionQuantity int                        `xml:"completionQuantity,attr"`
	IsForCompensation  bool                       `xml:"isForCompensation,attr"`
	OperationRef       string                     `xml:"operationRef,attr"`
	Implementation     string                     `xml:"implementation,attr"`
	Input              []extensions.TIoMapping    `xml:"extensionElements>ioMapping>input"`
	Output             []extensions.TIoMapping    `xml:"extensionElements>ioMapping>output"`
	TaskDefinition     extensions.TTaskDefinition `xml:"extensionElements>taskDefinition"`
}

func (TServiceTask) GetAssignmentAssignee

func (serviceTask TServiceTask) GetAssignmentAssignee() string

func (TServiceTask) GetAssignmentCandidateGroups

func (serviceTask TServiceTask) GetAssignmentCandidateGroups() []string

func (TServiceTask) GetId

func (serviceTask TServiceTask) GetId() string

func (TServiceTask) GetIncomingAssociation

func (serviceTask TServiceTask) GetIncomingAssociation() []string

func (TServiceTask) GetInputMapping

func (serviceTask TServiceTask) GetInputMapping() []extensions.TIoMapping

func (TServiceTask) GetName

func (serviceTask TServiceTask) GetName() string

func (TServiceTask) GetOutgoingAssociation

func (serviceTask TServiceTask) GetOutgoingAssociation() []string

func (TServiceTask) GetOutputMapping

func (serviceTask TServiceTask) GetOutputMapping() []extensions.TIoMapping

func (TServiceTask) GetTaskDefinitionType

func (serviceTask TServiceTask) GetTaskDefinitionType() string

func (TServiceTask) GetType

func (serviceTask TServiceTask) GetType() ElementType

type TStartEvent

type TStartEvent struct {
	TCatchEvent
	IsInterrupting   bool `xml:"isInterrupting,attr"`
	ParallelMultiple bool `xml:"parallelMultiple,attr"`
}

func (TStartEvent) GetId

func (startEvent TStartEvent) GetId() string

func (TStartEvent) GetIncomingAssociation

func (startEvent TStartEvent) GetIncomingAssociation() []string

func (TStartEvent) GetName

func (startEvent TStartEvent) GetName() string

func (TStartEvent) GetOutgoingAssociation

func (startEvent TStartEvent) GetOutgoingAssociation() []string

func (TStartEvent) GetType

func (startEvent TStartEvent) GetType() ElementType

type TSubProcess

type TSubProcess struct {
	TActivity
	TriggeredByEvent       bool                      `xml:"triggeredByEvent,attr"`
	StartEvents            []TStartEvent             `xml:"startEvent"`
	EndEvents              []TEndEvent               `xml:"endEvent"`
	SequenceFlows          []TSequenceFlow           `xml:"sequenceFlow"`
	ServiceTasks           []TServiceTask            `xml:"serviceTask"`
	UserTasks              []TUserTask               `xml:"userTask"`
	SubProcesses           []TSubProcess             `xml:"subProcess"`
	ParallelGateway        []TParallelGateway        `xml:"parallelGateway"`
	ExclusiveGateway       []TExclusiveGateway       `xml:"exclusiveGateway"`
	IntermediateCatchEvent []TIntermediateCatchEvent `xml:"intermediateCatchEvent"`
	IntermediateTrowEvent  []TIntermediateThrowEvent `xml:"intermediateThrowEvent"`
	EventBasedGateway      []TEventBasedGateway      `xml:"eventBasedGateway"`
	InclusiveGateway       []TInclusiveGateway       `xml:"inclusiveGateway"`
}

func (TSubProcess) GetEndEvents

func (subProcess TSubProcess) GetEndEvents() []TEndEvent

func (TSubProcess) GetEventBasedGateway

func (subProcess TSubProcess) GetEventBasedGateway() []TEventBasedGateway

func (TSubProcess) GetExclusiveGateway

func (subProcess TSubProcess) GetExclusiveGateway() []TExclusiveGateway

func (TSubProcess) GetId

func (subProcess TSubProcess) GetId() string

func (TSubProcess) GetInclusiveGateway

func (subProcess TSubProcess) GetInclusiveGateway() []TInclusiveGateway

func (TSubProcess) GetIncomingAssociation

func (subProcess TSubProcess) GetIncomingAssociation() []string

func (TSubProcess) GetIntermediateCatchEvent

func (subProcess TSubProcess) GetIntermediateCatchEvent() []TIntermediateCatchEvent

func (TSubProcess) GetIntermediateTrowEvent

func (subProcess TSubProcess) GetIntermediateTrowEvent() []TIntermediateThrowEvent

func (TSubProcess) GetName

func (subProcess TSubProcess) GetName() string

func (TSubProcess) GetOutgoingAssociation

func (subProcess TSubProcess) GetOutgoingAssociation() []string

func (TSubProcess) GetParallelGateway

func (subProcess TSubProcess) GetParallelGateway() []TParallelGateway

func (TSubProcess) GetSequenceFlows

func (subProcess TSubProcess) GetSequenceFlows() []TSequenceFlow

func (TSubProcess) GetServiceTasks

func (subProcess TSubProcess) GetServiceTasks() []TServiceTask

func (TSubProcess) GetStartEvents

func (subProcess TSubProcess) GetStartEvents() []TStartEvent

func (TSubProcess) GetSubProcess

func (subProcess TSubProcess) GetSubProcess() []TSubProcess

func (TSubProcess) GetType

func (subProcess TSubProcess) GetType() ElementType

func (TSubProcess) GetUserTasks

func (subProcess TSubProcess) GetUserTasks() []TUserTask

type TTask

type TTask struct {
	TActivity
}

type TThrowEvent

type TThrowEvent struct {
	TEvent
}

type TTimeDuration

type TTimeDuration struct {
	XMLText string `xml:",innerxml"`
}

type TTimerEventDefinition

type TTimerEventDefinition struct {
	TEventDefinition
	TimeDuration TTimeDuration `xml:"timeDuration"`
}

type TUserTask

type TUserTask struct {
	TTask
	Input                []extensions.TIoMapping          `xml:"extensionElements>ioMapping>input"`
	Output               []extensions.TIoMapping          `xml:"extensionElements>ioMapping>output"`
	AssignmentDefinition extensions.TAssignmentDefinition `xml:"extensionElements>assignmentDefinition"`
}

func (TUserTask) GetAssignmentAssignee

func (userTask TUserTask) GetAssignmentAssignee() string

func (TUserTask) GetAssignmentCandidateGroups

func (userTask TUserTask) GetAssignmentCandidateGroups() []string

func (TUserTask) GetId

func (userTask TUserTask) GetId() string

func (TUserTask) GetIncomingAssociation

func (userTask TUserTask) GetIncomingAssociation() []string

func (TUserTask) GetInputMapping

func (userTask TUserTask) GetInputMapping() []extensions.TIoMapping

func (TUserTask) GetName

func (userTask TUserTask) GetName() string

func (TUserTask) GetOutgoingAssociation

func (userTask TUserTask) GetOutgoingAssociation() []string

func (TUserTask) GetOutputMapping

func (userTask TUserTask) GetOutputMapping() []extensions.TIoMapping

func (TUserTask) GetTaskDefinitionType

func (userTask TUserTask) GetTaskDefinitionType() string

func (TUserTask) GetType

func (userTask TUserTask) GetType() ElementType

type TaskElement

type TaskElement interface {
	BaseElement
	GetInputMapping() []extensions.TIoMapping
	GetOutputMapping() []extensions.TIoMapping
	GetTaskDefinitionType() string
	GetAssignmentAssignee() string
	GetAssignmentCandidateGroups() []string
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL