Contents | SCXML Wiki | SCXML Examples | Forum |
---|
Powerful tool for creating, editing and debugging SCXML charts.
New: IDE Insight, DOT-based autolayout, SCXML to DOT, Inheritance, visual chart splitting, conditional project definitions, GIF maker etc.
2.5.5: Chart design panel view presets
2.5.4: Nested initial state indication
2.5.3: Chart Draw Constraints, Select Chart Elements
2.5.1: Fast Triggers
2.5: Virtual Invoke
2.4: Post Save Commands, Self-Transitions Inside
2.3: Highlight Transitions
2.2.4: Import QtCreator state charts
2.2.3: Transition indexes bugfix
2.2.2: Option to override SmartTransitions
2.2.1: Qt SVG Monitors Released
2.2: Invoke ID is sending by testing apps
2.1.10: New breakpoints interface
2.1.9: Better handling of virtual states
2.1.8: Support of custom console testing applications like SCION command-line tool
2.1.7: SVG Export Settings
2.1.6: UScxmlTester with EcmaScript, In() predicate autocomplete, QtScxmlTester 5.9.1->5.15
2.1.5: Refactored Qt external debugger
2.1.4: Export SCXML to SVG, Structure View
NOTICE! Dot '.' must be a float-point delimiter in OS Regional Settings !!!
You can find portable version as attached Zip in ScxmlEditor Github Release page
Latest version: [2.5.5.1755]
NOTICE! We are continiously making updates, so follow the version number on the README page and update to the latest to have all last cool features
sudo apt -y install wine
sudo apt install ttf-mscorefonts-installer
cd /path/to/ScxmlEditor
wine ScxmlEditor.exe
Read detailed installation steps here
If you are interested in the development of ScxmlEditor we would be highly appreciated for any help.
Paypal |
---|
ScxmlEditor source code is distributed under under the terms of the BSD 3-Clause License but if you want to compile binary application by yourself you need to purchase external components with their own licensies by yourself.
Current binaries are compiled with single development licensies registered by this github account owner name. Many thanks to all who made donations and especially to [Ed K]() for his valuable contribution
External Components | License | Comment |
---|---|---|
TeeChart Pro | Steema Software Licenses | State chart editor is based on TTree |
LMD VCL Complete | LMD Innovative License | Used in Dock Panels, Property inspector, etc. |
VCL Components | C++Builder Community Edition | General application compilation and VCL standard components |
log4cpp | LGPL-2.1 license | Logger |
myJSON | MIT License | JSON Parsing |
PNG Functions | Mozilla Public License 1.1 | PNG Functions |
Unit is a single scxml chart. It is mostly used for simple charts without invokable sessions.
Select File->New Unit or press Shift+Ctrl+N
Project is the most preferred choice of designing scxml charts to get all benefits (custom triggers, nested scxml charts, etc.)
Select File->New Project or press Ctrl+N
ScxmlEditor provides a project wizard for opening scxml. It supports either opening files with metainformation about the position of states and transitions or plain scxml files. You can use ScxmlEditor to add states and transitions to the chart. You can add executable content to a state chart to enable the state machine to modify its data model and to interact with external entities.
Is used to edit and examine the properties of the currently selected states, executable contents and transitions.
Are used to add scxml elements, zoom, align, change chart visual options, etc.
Press 'Ctrl+.' to call IDE Insight dialog where you may search for all actions through the application. Add shapes, edit properties in one place!
ScxmlEditor has an ability to receive and send string UDP commands:
@@@
- clear highlighted states in all statecharts@@@ScxmlName
- clear highlighted states in statechart where \<scxml> 'name' is equal ScxmlName
Type@ScxmlName@Msg@Id
- commands to highlight state or display message in CallStack panel Type
- integer type of command: 1 - AfterEnter, 2 - BeforeEnter, 3 - AfterExit, 4 - BeforeExit, 5 - Step, 6 - BeforeExecContent, 7 - AfterExecContent, 8 - BeforeInvoke, 9 - AfterInvoke, 10 - BeforeUnInvoke, 11 - AfterUnInvoke, 12 - BeforeTakingTransition, 13 - AfterTakingTransition, 14 - StableConfiguration, 15 - BeforeProcessingEvent
ScxmlName
- name of \<scxml> Msg
- message which depends on type of command. For example: for BeforeEnter or BeforeExit - it is the id(name) of states, for BeforeInvoke or BeforeUnInvoke it is the name of invoked element, etc.
Id
- identifier of the invoked state machine (Since ScxmlEditor 2.2). Can be empty for root machines
BeforeEnter graphically highlight and BeforeExit unhighlight the corresponding states, other commands are displayed in CallStack panel
Since ScxmlEditor 2.3 there is an option to highlight taking transitions in BeforeTakingTransition Message format:
FromState|TransitionIndex
whereTransitionIndex
is transition xml child index
2@CalculatorStateMachine@operand1
- highlight state operand1
in statechart CalculatorStateMachine 4@CalculatorStateMachine@operand1
- unhighlight state operand1
in statechart CalculatorStateMachine 2@ScxmlSub1@isSub1@ID_SUB_1
- highlight state isSub1
in statechart ScxmlSub1 when invoke Id is ID_SUB_1
12@CalculatorStateMachine@operand1|0
- highlight the first transition from operand1 state in statechart CalculatorStateMachine You can also trace the execution of the chart and use breakpoints.
ScxmlEditor starts a testing application, intercepts its command line output and may communicate in two modes:
There are two ready-to-use testing applications:
Based on USCXML framework. Supports null, lua, ecmascript datamodels
QtScxmlTester - based on Qt SCXML framework Supports null, ecmascript datamodels
Also you may write your own testing application using the corresponding API
In this mode ScxmlEditor only listens UDP commands for highlighting states and displaying messages in CallStack panel
It was an old dream to monitor state machine workflow without any external dependencies in Qt and finally it comes true. We prepared some native SCXML SVG monitors:
Since ScxmlEditor 2.2.1 you can export SCXML to SVG, include only monitor headers in your app and create monitor instances any time.
NOTICE: While state machine pointer is not set, the monitor does nothing and can be left in Release.
For Qt SCXML applications you may include scxmlexternmonitor2.h header to your project and follow the instructions
TOP | Contents | SCXML Wiki | SCXML Examples | Forum |
---|