All Projects → alexzhornyak → ScxmlEditor-Tutorial

alexzhornyak / ScxmlEditor-Tutorial

Licence: BSD-3-Clause License
ScxmlEditor - powerful tool for creating, editing and debugging scxml files

Programming Languages

C++
36643 projects - #6 most used programming language
QML
638 projects

Projects that are alternatives of or similar to ScxmlEditor-Tutorial

xstate
State machines and statecharts for the modern web.
Stars: ✭ 21,286 (+64403.03%)
Mutual labels:  fsm, statechart, state, scxml
Xstate
State machines and statecharts for the modern web.
Stars: ✭ 18,300 (+55354.55%)
Mutual labels:  statechart, state, scxml
statemachine-go
🚦 Declarative Finite-State Machines in Go
Stars: ✭ 47 (+42.42%)
Mutual labels:  fsm, state
StateBuilder
State machine code generator for C++ and Java.
Stars: ✭ 30 (-9.09%)
Mutual labels:  statechart, state
Finity
A finite state machine library for Node.js and the browser with a friendly configuration DSL.
Stars: ✭ 88 (+166.67%)
Mutual labels:  fsm, state
qp-arduino
QP real-time embedded frameworks/RTOS for Arduino (AVR and SAM)
Stars: ✭ 37 (+12.12%)
Mutual labels:  fsm, statechart
kstatemachine
KStateMachine is a Kotlin DSL library for creating finite state machines (FSM) and hierarchical state machines (HSM).
Stars: ✭ 63 (+90.91%)
Mutual labels:  fsm, transitions
simple-state-machine
A simple Java state machine for Spring Boot projects
Stars: ✭ 25 (-24.24%)
Mutual labels:  fsm, statechart
qm
QM model-based design tool and code generator based on UML state machines
Stars: ✭ 54 (+63.64%)
Mutual labels:  fsm, statechart
k-ramel
State manager for your components apps, the safe and easy way
Stars: ✭ 20 (-39.39%)
Mutual labels:  state
jelly-chart
Jelly-Chart is a chart library based on D3v4 and SVG.
Stars: ✭ 34 (+3.03%)
Mutual labels:  chart
ascii chart
Nice-looking lightweight console ASCII line charts ╭┈╯. Port of kroitor/asciichart.
Stars: ✭ 24 (-27.27%)
Mutual labels:  chart
k8s-kv
Kubernetes config maps backed KV store for stateful apps
Stars: ✭ 29 (-12.12%)
Mutual labels:  state
pizzeria
🍕Chart generator as a service
Stars: ✭ 88 (+166.67%)
Mutual labels:  chart
fea state machines
A Buffet Of C++17 State Machines
Stars: ✭ 19 (-42.42%)
Mutual labels:  fsm
MyIncomeChart
仿金融收益曲线图
Stars: ✭ 40 (+21.21%)
Mutual labels:  chart
awesome-canvas
Canvas资源库大全中文版。An awesome Canvas packages and resources.
Stars: ✭ 288 (+772.73%)
Mutual labels:  chart
state
Store a certain application state in the session or cache.
Stars: ✭ 17 (-48.48%)
Mutual labels:  state
comparative-layout-explorer
📊 x 📊 =❓An online gallery to explore the design space of comparative layouts
Stars: ✭ 16 (-51.52%)
Mutual labels:  chart
dns-resolver-infra
Privacy DNS infrastructure
Stars: ✭ 39 (+18.18%)
Mutual labels:  dot
Contents SCXML Wiki SCXML Examples Forum

Video overview - v.1.0

Video overview - v.2.0

Video overview - v.2.1

Video overview - v.2.2

Scxml Editor 2.2

Powerful tool for creating, editing and debugging SCXML charts.

MainExample

New: IDE Insight, DOT-based autolayout, SCXML to DOT, Inheritance, visual chart splitting, conditional project definitions, GIF maker etc.

Quick Support

Discord

Changelog

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

System requirements

  • Windows 7, 8, 10, 11 (MSVC 2010, MSVC 2015 Update 3 Runtimes installed)
  • Linux via Wine
  • Mac OS via Wine

Installation

You can find portable version here

Latest version: 2.2.4.1642

Windows installation

First Install

  1. Download and unpack it in any target location
  2. Install ScxmlEditor\vcredist_x86.exe for UscxmlTester, Graphviz
  3. Install ScxmlEditor\vcredist_x64.exe for QtScxmlTester
    (You may skip steps 2 and 3 if you have previously installed MSVC 2015 Update 3 redistributable)
  4. Install ScxmlEditor\UScxmlTester\vcredist_x86_vc10.exe for UscxmlTester with EcmaScript datamodel
    (You may skip step 4 if you have previously installed MSVC 2010 redistributable)

Update

  1. Download and unpack it into Temporary folder
  2. Run Temporary\ScxmlEditor\ScxmlEditor_InstallOrUpdate.cmd "Path\To\Location\ScxmlEditor"

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

Linux installation

  1. Install Wine:
sudo apt -y install wine
  1. Install Microsoft fonts
  • Install a collection of Microsoft fonts.
sudo apt install ttf-mscorefonts-installer
  • Acknowledge the terms of the EULA in your terminal when prompted.
  1. Download ScxmlEditor and unpack it in any target location
  2. Run program
cd /path/to/ScxmlEditor
wine ScxmlEditor.exe

AppPreview

Roadmap

  • Make Open API (Lua based)
  • Make cross-platform
  • Make opensource

Donations

If you are interested in the development of ScxmlEditor we would be highly appreciated for any help.

Paypal
PaypalBtn

Table of contents

Creating SCXML charts

Creating a unit

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

new_unit

Creating a project

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

new_project

Editing SCXML charts

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.

  1. Select File->Open Unit or press Shift+Ctrl+O (for all types of .scxml files)
  2. Select File->Open Project or press Ctrl+O (for ScxmlEditor .sproj files)

Property inspector

Is used to edit and examine the properties of the currently selected states, executable contents and transitions.

2018-09-26 09 50 33

Editor tabs

Are used to add scxml elements, zoom, align, change chart visual options, etc.

2018-09-26 09 50 33

NEW! IDE Insight

Press 'Ctrl+.' to call IDE Insight dialog where you may search for all actions through the application. Add shapes, edit properties in one place!

ide_insight

Structure View with quick search

StructureViewSearch

Debugging

ScxmlEditor has an ability to receive and send string UDP commands:

Receive API:

  • @@@ - 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
    Description: 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

Example of commands:

  • 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

You can also trace the execution of the chart and use breakpoints.

Local debugging

ScxmlEditor starts a testing application, intercepts its command line output and may communicate in two modes:

  • UDP mode (receives UDP commands and sends events as UDP packages to testing application)
  • Pipes mode (since version 2.1.8) (capture enter-exit events from console output by regexp, and submit trigger event to state machine to console input)

There are two ready-to-use testing applications:

  1. Based on USCXML framework. Supports null, lua, ecmascript datamodels

  2. Based on Qt SCXML framework Supports null, ecmascript datamodels

Also you may write your own testing application using the corresponding API

External debugging

In this mode ScxmlEditor only listens UDP commands for highlighting states and displaying messages in CallStack panel

Breakpoints

BreakpointsImage

Qt SCXML framework debugging

NEW! Qt SCXML Debug Via SVG

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:

StopWatchDemo

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.

Qt SCXML External Debugging with ScxmlEditor

For Qt SCXML applications you may include scxmlexternmonitor2.h header to your project and follow the instructions

Example of debugging Qt Calculator-QML project

MonitorQML1

  1. Select Run->Start listening from external application
  2. Select Run->Run
  3. Launch Calculator-QML.exe
  4. Use Pause for tracing (optionally)

CalculatorDebug

TOP Contents SCXML Wiki SCXML Examples Forum
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].