JKI State Machine Objects Versions Save

Object-oriented framework for LabVIEW based on the JKI State Machine

1.4.0

2 years ago

Release notes

[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 is destroyed in SelfReference. [Fix: 64] Dependencies stop sequence now completes regardless of upstream errors [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

[Removed: 52] SMO now features Abstract Configuration Management with support for Cache and Collections.

Contributors list:

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)

1.4.0-beta

2 years ago

Note from maintainer: The build 1.4.0.66 is being tested in pre-production code as of 11/10. If no issues are found from the upgrade from 1.3.x to 1.4.0, it is expected to be fully released soon.

_Note from maintainer: The build 1.4.0.69 is being tested in pre-production code as of 01/22. Two related bugs have been found in pre-production testing of 1.4.0.x and fixed for build 68. Build 67 introduced an optimization of the process registration process. Build 68 fixes issues 83 and 84.

Pre-release notes

[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 is destroyed in SelfReference. [Fix: 64] Dependencies stop sequence now completes regardless of upstream errors [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

Removed from previous beta pre-release

Abstract Configuration Management will not be part of the SMO Base and can instead be implemented using dynamic attributes on a per-project basis. Build 57 is kept in the artifacts for archiving, but it will not contain the abstract configuration management and should NOT BE USED IN PRODUCTION.

[Removed: 52] SMO now features Abstract Configuration Management with support for Cache and Collections.

Contributors list:

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)

1.3.0

6 years ago

[Fix: 40] onProcessStart( ) has been moved to the process thread to be symmetrical with onProcessStop( ). [Fix: 41] onStopped, onStarted and onProcessStopped methods must require overrides to call parent. [Fix: 42] Process now resets call-parent state when process terminates, to prepare process for consistent restart conditions, if requested. [Fix: 43] onProcessStopped now symmetrical with onProcessStart, in Process thread. [Feature: 45] Create method now allows a dependency to be declared as shared without specific ownership. [Fix: 46] dependencies are now stopped during the onStopped callback, not onStop. [Fix: 47] LaunchDependency method, called during onStart, is split in two parts: one that creates the dependency and takes ownership on creation (in a non-reentrant method to disallow concurrent creations), the second to start the dependency which is reentrant to allow recursive calls.

1.2.1

7 years ago

[Fix: 38] EnumerateStaticDependencies is now called only during onStart( ) to allow developer to override and create and configure objects as part of dependency injection without risking multiple creation of objects.

1.2.0

7 years ago

[Feature: 34] Introducing SMO Facade for accessing SMO Components' public API generically.

1.1.17

7 years ago

[Fix: 36] Fixed an issue where Shared Dependencies that are aggregated in the Static Dependencies list would be filtered out.

[Feature: 35] Adding reserve mechanism to limit accessibility to public methods to a single master.

  • Default behavior is unreserved for all methods.
  • Developer is required to implement the Check Availability on a method-per-method basis to take advantage of this feature in critical systems.
  • Technically allows a way to deny access to public API calls during critical states.

1.1.16

7 years ago

[Fix: 32] Parent process can now be overwritten by child implementation

1.1.15

7 years ago

[Feature: 31] Stop Dependency now exposes a timeout terminal (default = -1)

[Feature] List Dependencies method has been made protected (previously private) after addition of ownership verification which is meant to prevent leaking the dependencies list in composition hierarchy. This node is supposed to be used solely to access dependencies in own inheritance tree. An unauthorized call will return an empty list.

1.1.14

7 years ago

[Feature:30] Dependency can now self-terminate and dependent takes care of destroying reference.

[Feature] Added a protected method to allow dependency to message dependent (send any packet of information) which is handled by onDependencyMessage ( ) callback method.

1.1.13

7 years ago

[Feature: 14] Dependents now monitor their dependencies state changes. Created two override hooks: "onDependencyStarted( )" and "onDependencyStopped( )". Dependent will clean its dependencies list on "Dependency Destroyed" event, although no hooks are exposed for that since dependency reference does not exist anymore.

[Feature: 16] Dependent captures own dependency error Created an overridable hook for dependent "onUnhandledDependencyError( )"