---
title: "Creating and Running Workflows — SpiffWorkflow 3.0.0 documentation"
source_url: https://spiff.works/docs/spiffworkflow/bpmn/imports.html
---

☰ Menu

# Creating and Running Workflows[](#creating-and-running-workflows "Link to this heading")

```
from SpiffWorkflow.bpmn import BpmnWorkflow, BpmnEvent
from SpiffWorfkflow import TaskState
```

# Parsing[](#parsing "Link to this heading")

## Basic Parsing[](#basic-parsing "Link to this heading")

```
from SpiffWorkflow.bpmn.parser import BpmnParser, BpmnValidator
```

## Customized Parsing[](#customized-parsing "Link to this heading")

```
from SpiffWorkflow.bpmn.parser import TaskParser, EventDefinitionParser
```

## Examples[](#examples "Link to this heading")

- [Parsing BPMN](parsing.html)
- [Implementing a Custom Task Spec](custom_task_spec.html)

# Script Engine[](#script-engine "Link to this heading")

## To modify the default execution environment[](#to-modify-the-default-execution-environment "Link to this heading")

```
from SpiffWorkflow.bpmn.script_engine import TaskDataEnvironment
```

## To control how the engine interacts with the workflow[](#to-control-how-the-engine-interacts-with-the-workflow "Link to this heading")

```
from SpiffWorkflow.bpmn.script_engine import PythonScriptEngine
```

## To implement custom exec/eval[](#to-implement-custom-exec-eval "Link to this heading")

```
from SpiffWorkflow.bpmn.script_engine import BasePythonScriptEngineEnvironment
```

## Examples[](#id1 "Link to this heading")

- [Script Engine Overview](script_engine.html)

# Specs[](#specs "Link to this heading")

## Using a Spec[](#using-a-spec "Link to this heading")

```
from SpiffWorkflow.bpmn.specs import <TaskSpec>
from SpiffWorkflow.bpmn.specs.event_definition import <EventDefinition>
```

## Extending a Spec[](#extending-a-spec "Link to this heading")

```
from SpiffWorkflow.bpmn.specs import BpmnTaskSpec           # Implements generic BPMN behavior
from SpiffWorkflow.bpmn.specs.mixins import <TaskSpecMixin> # Implements specific BPMN behavior
```

## Implement a Datastore[](#implement-a-datastore "Link to this heading")

```
from SpiffWorkflow.bpmn.spec import BpmnDataStoreSpecification
```

## Examples[](#id2 "Link to this heading")

- [Instantiating a Workflow](workflows.html)
- [Implementing a Custom Task Spec](custom_task_spec.html)

# Serializer[](#serializer "Link to this heading")

## Basic Usage[](#basic-usage "Link to this heading")

```
from SpiffWorkflow.bpmn.serializer import BpmnWorkflowSerializer
```

## Custom Data[](#custom-data "Link to this heading")

```
from SpiffWorkflow.bpmn.serializer import DefaultRegistry
```

## Spec Customizations[](#spec-customizations "Link to this heading")

```
from SpiffWorkflow.bpmn.serializer import DEFAULT_CONFIG
from SpiffWorkflow.bpmn.serializer.default import <TaskSpecConverter>
from SpiffWorkflow.bpmn.serializer.helpers import (
    TaskSpecConverter,
    EventDefinitionConverter,
    BpmnDataSpecificationConverter,
)
```

## Examples[](#id3 "Link to this heading")

- [Introduction](serialization.html)
- [Implementing a Custom Task Spec](custom_task_spec.html)

# DMN[](#dmn "Link to this heading")

```
from SpiffWorkflow.dmn.parser import BpmnDmnParser
from SpiffWorkflow.dmn.specs import BusinessRuleTaskMixin
from SpiffWorkflow.dmn.serializer import BaseBusinessRuleTaskConverter
```

# Spiff[](#spiff "Link to this heading")

```
from SpiffWorkflow.spiff.parser import SpiffBpmnParser, VALIDATOR
from SpiffWorkflow.spiff.specs import <TaskSpec>
from SpiffWorkflow.spiff.serializer import DEFAULT_CONFIG
```

# Camunda[](#camunda "Link to this heading")

```
from SpiffWorkflow.camunda.parser import CamundaParser
from SpiffWorkflow.camunda.specs import <TaskSpec>
from SpiffWorkfllw.camunda.serializer import DEFAULT_CONFIG
```
