Sign Up

JKI State Machine Objects (SMO) by JKI - Toolkit for LabVIEW Download

JKI State Machine Objects is an easy-to-use yet powerful object-oriented framework for LabVIEW.

Watch * 14 ↓12,641
ReleasedJan 10, 2022
Publisher JKI
License BSD
LabVIEW VersionLabVIEW>=13.0
Operating System Windows, Mac, and Linux
Dependencies jki_lib_state_machine  
Used By jki_smo_ui_templates   jki_smo_timedloop_templates   jki_lib_smo_editor   jki_smo_daqmx_templates   jki_smo_templates_graph   jki_smo_templates  
Project links Homepage   Repository  


The JKI State Machine Objects (SMO) for LabVIEW is an easy-to-use yet powerful object-oriented framework, based on the JKI State Machine. It is the very same framework that is used by the JKI team in our everyday project work, and is the result of years of refinement by our team of LabVIEW experts.

Get the Source Code:
All the source code is available on our GitHub repository ( where you can download the framework and make your own changes. You can also download the built package.

Discuss by Asking Questions & Presenting Your Ideas:
The JKI SMO NI Community Group ( is a great place to have discussions about your ideas and feedback.

Release Notes (Jan 10, 2022)

[Feature: 18] Unique names are now tied to composition tree hierarchy
[Fix: 24] Destroy method now tries to Stop SMO gracefully before Abort
[Fix: 44] List Dependencies is now more efficient
[Fix: 49] Attributes efficiency has been increased by using native variant attributes for searching
[Feature: 50] Attributes now have names and scope requirements.
[Fix: 56] State change event is now always destroyed on SMO termination (fixed a memory leak)
[Fix: 59] Static dependencies process now starts after owner creates registration mailbox
[Fix: 63] Owner Attribute memory leak on object destruction is now fixed
[Fix:64] Dependencies are now being stopped even if the owner's stop sequence introduced an upstream error
[Fix: 65] Add Dependency now is a no-op if there is an upstream error.
[Fix: 66] Speed improvements for shared key computations
[Fix: 70] SMO reference is now fed back to the shift register in the SMO process
[Fix: 71] Fixed the issue with facade method not handling input clusters correctly
[Feature: 74] Addition of an inheritable "Error Handling Behavior" attribute to manage the way the SMO reacts on an unhandled error.
[Fix: 75] Find Dependency by Key now will return false when no dependencies in the list.
[Fix: 76] LaunchDependency now has required input for "SMO in"
[Fix: 77] Terminal is now recommended for SetAttributeByName
[Feature: 78] Addition of two callbacks wrapping the startup of Static Dependencies
[Feature: 79] Support for pre-start Attributes in SMO object
[Feature: 80] List Public Attributes by Name
[Fix: 81] Process registration is now using re-entrancy to speed up sibling classes load time
[Fix: 83] StopProcess now correctly stops dynamic dependencies that were started within the SMO process
[Fix: 84] Process Sync now waits for Started state with option to bypass
[Fix: 85] Destroying a dependency releases the name for reuse

Thanks for all the contributions that led to this release, whether by reporting bugs, requesting features that made it to release or by lending a hand in fixing issues or releasing features:

Joseph Albro (@Monkeymerlot)
Eric Graham (@gcodetechnology)
Patrick Irvin (@ciozi137)
Jim Kring (@jimkring)
Nathan Murphy (@nathan-murphy)
Francois Normandin (@francois-normandin)
Ricardo Guilherme Schmidt (@3esmit)

francois-normandin was a contributor to this release

Recent Posts

online training
I'd sure be interested in a comprehensive online course on how to use JKI SMOs. One thing I especi…

by James Carmody, 3 years, 9 months ago, 1 , 4
Getting Started with JKI SMO Framework
Learn how to create your first State Machine Objects (SMO) class in this short tutorial by JKI. Enj…

by Javier Ruiz, 3 years, 10 months ago, 0 , 4