OpenBee Wiki
How to install OpenBee and get work done in it. On Windows and Linux, read ⌘ as Ctrl.
Install
macOS
Open the .dmg and drag OpenBee into Applications. The app is not notarised by Apple, so the first launch shows a warning. Right-click OpenBee, choose Open, and confirm. Alternatively, allow it under System Settings → Privacy & Security. Later launches work normally.
Windows
Unzip the archive and run OpenBee.exe. If SmartScreen appears, choose More info → Run anyway. OpenBee needs no installer and stores its settings in your user profile.
Linux
Extract the tarball and run ./openbee. The archive includes a .desktop file and an icon if you want a launcher entry.
Your first diagram
The start screen shows one card per diagram type with a small preview. Click a card to open an empty diagram, or open one of the examples to see a finished model. File → New Diagram (⌘N) opens the same choice later.
The palette on the left lists the elements of the current language. Click an element and then click on the canvas, or drag it onto the canvas. Double-click a palette entry to place several in a row; Esc ends the tool.
A selected element shows four blue arrows. Drag an arrow onto another element to connect the two. Drop it on empty space and OpenBee lists the elements that can follow; pick one and it is created and connected. A single click on an arrow adds the most likely next element in that direction, for example the next task in a BPMN process.
OpenBee chooses the relation type from the two elements and refuses connections the language does not allow. To use a specific relation, select it in the palette, then drag from the source to the target. Clicking the source and then the target works too; clicks on empty space in between add bend points.
Double-click an element or a relation to rename it, or press Enter or F2. All other properties live in the inspector on the right. With nothing selected, the inspector shows the model's properties and the tools for this language.
Editing
Drag elements to move them and drag the white handles to resize them. Elements snap to the grid and to the edges and centres of other elements; hold Shift while dragging to turn snapping off. Arrow keys nudge the selection by one pixel, or ten with Shift.
Pools, lanes, packages, system boundaries and fragments are containers. Moving one moves everything inside it; hold Alt to move the container alone.
A selected relation shows small dots on its segments. Drag a dot to add a bend point and double-click a bend point to remove it. Drag either end of a relation onto another element to reconnect it. The context menu and the inspector switch between automatic, straight and right-angle routing, reset the route, and reverse the direction.
Select several elements with a selection box or Shift-click, then align or distribute them from the inspector or Edit → Align. Copy, paste and duplicate work within a model and between open models of the same type. Undo keeps the last 200 steps.
The context menu on an element can convert it to a related type, for example an exclusive gateway into a parallel one, keeping the attributes both types share.
Languages
| Diagram type | Notes |
|---|---|
| Business Process Diagram (BPMN 2.0) | Events with triggers such as message, timer, signal and error. Boundary events: drop an intermediate event on the border of a task and it stays attached. Typed tasks, loop, multi-instance, compensation and ad-hoc markers, sub-processes, exclusive, parallel, inclusive, complex and event-based gateways (also instantiating), data objects and stores, pools, lanes, groups and annotations. |
| EPC Model | Events, functions, XOR, AND and OR operators, process interfaces, organisational units and information objects. |
| ER Model | Chen, (min,max) or MC notation, chosen with the model's Used Notation. Weak entities, identifying relations, IS-A with an arrow to the supertype and total/partial and disjoint/overlapping labels, relations treated as entities, key, partial key, multivalued, composite and derived attributes. |
| UML | Class/object (qualified associations, association classes, n-ary associations, generalisation constraints), use case (extension points, extend conditions), activity (pins, interruptible regions, interrupting edges, partitions), state machine (composite states with regions, internal transitions, history, entry/exit points, terminate), sequence (all twelve fragment operators, lost and found messages, state invariants, continuations, time constraints, active and destroyed lifelines), component (provided and required interfaces, ports), deployment and package diagrams with stereotypes such as «device», «deploy», «manifest», «import» and «access». |
| Petri Net | Places with tokens and capacities, hot and cold transitions, weighted, inhibitor and reset arcs, and State Storage elements. |
| Flowchart | Terminals, operations, decisions, input/output and predefined processes. |
| Decision Requirements Diagram | DMN decisions, input data, business knowledge models, knowledge sources, decision services, annotations and decision tables. |
| Working Environment Model | Organisational units, performers with weekly hours and availability, applicants, roles and resources. Used by the capacity analysis. |
In UML class boxes, write one property or operation per line, for example - name: String or + getAge(): int. A leading _ marks a static member. Boxes grow to fit their content.
Model checks
OpenBee checks the model after every change. The toolbar shows the number of errors and warnings; click it, or press ⇧⌘M, to open the problems panel. Clicking a problem selects and centres the elements involved.
Each language has its own rules. Examples: EPC events and functions must alternate and only functions may be followed by an XOR or OR split. A BPMN start event cannot have incoming flows, message flows must connect different pools, and flows leaving an exclusive gateway need a condition. An ER entity needs a key attribute, a weak entity needs an identifying relation, and cardinalities must match the model's notation. DMN information requirements must not form a cycle.
Simulation
Petri nets
Click Simulate in the toolbar. Enabled transitions turn green; click one to fire it. Step fires one transition. Iterate runs one iteration as in Bee-Up: every transition that is ready at that moment fires, and tokens produced in the iteration are only usable in the next one. Run performs a given number of iterations at once, and Play keeps going at the chosen speed. Reset restores the marking from the start of the simulation.
When several transitions compete for the same tokens, the model's conflict strategy decides: either a random order weighted by each transition's probability, or the highest priority first. In iterations, cold transitions fire with their probability, because they depend on the environment.
Log lists every step with the fired transitions and the resulting marking, and saves it as CSV. Store keeps the current marking in a State Storage element on the canvas and Restore puts it back; the stored values can also be edited by hand.
Analyse net in the inspector builds the reachability graph and reports whether the net is bounded (and k), safe, deadlock-free, live and reversible, the bound of every place and the liveness level of every transition (L0 to L4). For every deadlock it shows the firing sequence that leads there. Unbounded nets are detected with a coverability graph, where ω marks places without a bound. The graph can be opened as its own diagram, and the Formal definition tab writes the net as the 6-tuple (S, T, F, K, W, M0).
An inhibitor arc enables its transition only while the place holds fewer tokens than the arc weight. A reset arc empties its place when the transition fires. A place with a capacity blocks transitions that would overfill it.
Flowcharts
Click Run to execute the flowchart from its start terminal. Operations and input/output elements run the statements in their Operation code; a decision evaluates its Check expression and follows the outgoing flow labelled yes or no. The console at the bottom shows the output and the current variables.
input n # reads n from the model's "Input values", e.g. n = 5
result = 1
result = result * n
print "Result: " + result
Expressions support numbers, strings, true/false, arithmetic, comparisons, and, or, not, and the functions len, str, num, round, floor, abs, sqrt, min and max. A run stops after 10,000 steps to catch endless loops.
Process analysis
BPMN, EPC and activity diagrams can be simulated. Enter on each task its execution, waiting, resting and transport time in minutes, and costs if needed; Bee-Up's 00:000:00:05:00 format works too. Put a Transition probability such as 30 % on the flows leaving a decision. Flows without a value share the remaining probability.
Path analysis
Click Path analysis in the inspector. OpenBee plays 10,000 process instances and lists every path with its probability and average times. Cycle time adds execution, waiting and resting time along the longest branch; transport time is shown separately. Click a path to select its elements in the diagram. The table copies into a spreadsheet or saves as CSV.
Capacity analysis
Model the organisation in a Working Environment Model: units, roles and performers connected with belongs to and has Role, each performer with weekly hours and availability. In the process, set on each task a Role, an Organizational unit, or a Performer by name. Tasks without an assignment use the name of their lane. Set how often the process runs, for example 10 times per day, on the process model.
With both models open, click Capacity analysis. OpenBee spreads the execution time of each task over the matching performers and shows each one's weekly workload, capacity and utilisation; anything above 100 % is marked red. Performers marked as applicants can be included to try out new hires.
Decision tables
Select a decision in a DMN diagram and click Add decision table. The table appears below the decision and takes its name; the input columns start with the decision's information requirements. Double-click the table, or use the inspector, to open the editor.
Input entries use simple FEEL: - for any value, literals such as "Rain", 42 or true, comparisons like < 20 and >= 40, ranges like [0..20], (0..20] or ]0..20[, lists like "Rain","Snow", and not(…). All hit policies are supported: U, A, P, F, R, O and C with sum, min, max or count.
Check table looks for overlapping rules and for input combinations that no rule covers. The test row evaluates the table and highlights the matching rules. Evaluate decisions in the inspector takes test values for all input data and evaluates every decision in dependency order, so the result of one table feeds the next.
SQL and code
SQL from ER models
In an ER model, click SQL in the toolbar. The dialog offers generic SQL, PostgreSQL, MySQL and SQLite and can copy the result or save it as a .sql file.
Each entity becomes a table and key attributes form its primary key. A 1:N relation adds a foreign key to the table on the "many" side; an M:N or n-ary relation becomes a junction table. Weak entities take their owner's key into their own primary key. Multivalued attributes get their own table and composite attributes are flattened. Set an attribute's SQL data type in the inspector; the default is VARCHAR(255).
Code from class diagrams
In a class diagram, click Code to generate Java, Python, C++ or TypeScript skeletons, one file per class, interface or enumeration. Generalisations become inheritance, realisations become implemented interfaces, and navigable associations become fields; a * multiplicity produces a list.
Files and export
OpenBee saves models as .obee files. The format is readable JSON, so models work well with git. File → Export writes PNG images at 1× to 4× scale, SVG images, PDF documents and Bee-Up ADL files, and can copy the diagram to the clipboard as an image. Exports always use the light theme.
The Files tab in the left sidebar shows all .obee and .adl files in a folder you choose. You can also drop files onto the window to open them.
View → Diagram Style switches between the default Modern style and a Classic style with black outlines. Light and dark mode follow the system; the sun and moon button overrides it.
Coming from Bee-Up
Export your models in Bee-Up with Model → ADL export → Models/Attribute profiles…, then open the .adl file with File → Import Bee-Up ADL…. Each model in the file opens in its own tab. Element and attribute names match Bee-Up 1.7. OpenBee keeps attributes it does not know and writes them back when you export to ADL again.
OpenBee skips inter-model references and attribute profiles. It does not run AdoScript, RDF export or AQL queries. Path and capacity analysis, Petri net iterations and State Storage work like in Bee-Up but are built in, without a Simulation Configurator.
Bee-Up does not allow a relation from an element to itself, or two relations of the same type between the same elements, and works around both with "Relation Nodes". OpenBee allows both directly and still imports Relation Nodes.
Keyboard shortcuts
| Keys | Action |
|---|---|
| ⌘K | Command palette: run commands, add elements, find elements by name |
| V / H / Space | Select tool / pan tool / pan while held |
| Enter or F2 | Rename the selection |
| ⌘Z / ⇧⌘Z | Undo / redo |
| ⌘C ⌘X ⌘V ⌘D | Copy, cut, paste, duplicate |
| ⌘A | Select all |
| Delete | Delete the selection |
| ⌘ + scroll, pinch | Zoom |
| ⌘0 / ⇧1 / ⇧2 | Actual size / zoom to fit / zoom to selection |
| G | Show or hide the grid |
| ⌘S / ⇧⌘S | Save / save as |
| ⌘E / ⇧⌘E | Export PNG / SVG |
| ⌘\ / ⇧⌘\ | Show or hide the sidebar / inspector |
| ⇧⌘M | Problems panel |
| Esc | Cancel the current tool or clear the selection |
Building from source
OpenBee is written in Rust and needs version 1.95 or newer.
git clone https://git.hochschule-burgenland.org/nikolaus.list/openbee.git
cd openbee
cargo run --release
On macOS, scripts/bundle-macos.sh --dmg builds an app bundle and a disk image. Linux builds need the development packages for libxkbcommon, libgl1 and libwayland. cargo test --workspace runs the test suite.