Method Flows
A Method Flow is a Flow Chart that has been designed using IonOS's Visual Programming Language (VPL).
A method flow can either be presented in a read-only or editable (isoprime precisION License Required) Method Flow Editor.
To view/edit a Method Flow, select a method in the Manage Methods dialog and select the Open Designer link.
IonOS includes some default locked method workflows that are not editable. In this case, even though the Method Flow Designer is read-only, it is still interactive. For example, you can select parameters, validation groups or designer blocks and see any associated properties. You can also drill down into child workflows by double-clicking on blocks (purple).
The Designer
Details
- Specify the Name, Description and category of a workflow
- Also displays parent flows if available with the ability to navigate up to a particular parent
- Will automatically select the appropriate parent if you previously navigated from that parent to this flow
Parameters
Parameters allow the logic of a method workflow to be customized from the Manage Methods dialog or from the Task List directly.
Parameters can have different directions associated with them
- In
- The value of the parameter is either set from a parent flow, the Manage Methods dialog or the Task List
- Out
- The value of the parameter should be set as part of this child flow and passed to a parent or passed up to the Task List
- None
- The parameter is only used within the scope of this flow or passed to child flows
Validation
Validation groups allow for parameters to be validated before the method is actually run.
This is useful for verifying that the parameters are within a valid range of valid for certain requirements.
A validation group can look at several parameters to manage inter-dependencies between parameters.
A validation group can also customize the parameter editor as seen in the Manage Methods dialog or the Task List to make it easier for the user to customize the parameter values.
Properties
The properties area of the Method Designer displays the properties for the currently selected item, which can be
- Parameter
- Validation Group
- Workflow Block
Designer
The designer is a "What You See Is What You Get" (WYSIWYG) editor. It incorporates a simple drag and drop user interface that allows complex method workflows to be created.
Commands
- Navigation
- Navigate back to the previous flow that you were looking at
- Navigate up to a specific parent of this flow
- Undo / Redo
- Remove the selected items
- Parameters
- Validation Groups
- Blocks
- Cut, Copy, Paste
- Group / Ungroup
- Send to back/front
- Edit Stages
Stages
Stages are a useful way of separating out process logic into multiple "stages". However, stages are more than just a logical grouping. They also allow for "Multiple Stage Acquisitions" to be performed, which ultimately allow multiple tasks to be run in parallel at different "stages" of their methods.
For example, you may run many tasks that all repeat the same method that contains a "Preparation" stage followed by an "Acquisition" stage. The desired behavior would be that while a task is in its "Acquisition" stage the next task can start its "Preparation" stage and then wait for the "Acquisition" stage to become available.
In reality, Multiple Stage Acquisitions usually require a third "Handshake" stage to handle the transition of a sample between the stages and associated hardware.
Action / Abort
In normal operation, the Action stage is used. However, if the user should want to "Abort" the task list (rather than just stop it, which waits for the current task to finish), then the method can enforce that some "Abort" process be followed to safely abort the task.
Blocks
A block is the fundamental element that makes the method workflows function.
There are several common blocks available to all methods as well as device-specific blocks.
The blocks that are available can depend on which devices are currently used by your system.
General
- Note
- Allows you to add none functional annotations to a workflow
- Assign
- Assign a value to a parameter
- The value can be either an explicit value, a parameter value or the result of a formula calculated from numerous parameters
- Assign a value to a parameter
- Delay
- Wait a defined time period
- Delay With Message
- Wait a defined time period and dynamically update a custom formatted status message with the duration left
- Delay Until
- Wait until a specific date and time
- Calculate Date
- Calculate a date/time based on a particular mode
- Mode: Specific, Today, Tomorrow, Specific Day Of Week
- Calculate a date/time based on a particular mode
- Do Nothing
- Do nothing. Useful to bring connection paths together
- Child Flow
- Reference some process that is already defined as part of another flow
- Error
- Report an error and abort the task
- Send Email
- Send an email with a set of parameters
- Email templates defined from IonOS Home -> Settings -> Email
- Decision
- Make a decision based on a parameter value
- The value can be either an explicit value, a parameter value or the result of a formula calculated from numerous parameters
- For Loop
- Perform a loop for a number of iterations
- For Each Loop
- Perform a loop for each item in a collection
Messaging
- Log Message
- Notification
- Display a notification dialog to the user that allows them to press Ok
- Continue Notification
- Display a notification dialog to the user that allows them to make a choice
- Display Balloon Message
- Display a temporary balloon message from the IonOS tray icon
- Add Status Message
- Add a status message to the System Status panel and get its Id
- Get Running Status Message
- Get the mandatory running status message id for the current task
- Update Status Message
- Update a status message by passing in its Id
- Remove Status Message
- Remove a status message by Id that has been added by this method
Synchronization
Dynamic
- Create Dynamic
- Create a dynamic object whose properties can be dynamically set
- Serialize Dynamic
- Convert a dynamic object to a text representation
Collection
- Create Collection
- Create a new collection
- Add To Collection
- Add an item to a collection
- Clear Collection
- Empty a collection
- Exists In Collection
- Check if an item exists in a collection
- Remove From Collection
- Remove an item from a collection
- Count Collection
- Get the number of items in a collection
Device Specific Blocks
Most supported devices expose blocks that wrap up discrete functionality
Restrictions
Some blocks are only available in Normal or Parallel Flow types. For example, the "Decision Block" cannot be used in a "Parallel Flow" and is only available in a "Standard Flow" type, which supports logic and decisions.
Existing Flows
A flow can use a child flow as part of its process.
This can be done by dragging on a "Child Flow" block and selecting the flow that you want to reference.
Alternatively, you can select the "Existing Flows" tab within the Blocks area of the Method Designer and click and drag the required flow onto the designer surface.
Concepts
Standard Flow Type
The standard flow type supports loops and logical decisions. Blocks can be run repeatedly as part of a loop or decision logic. Only one flow path can be active at any one time.
Parallel Flow Type
The parallel flow type allows multiple operations to happen simultaneously - represented by a split in the flow path.
When the flow path merges, then the flow can only continue when all merging paths have finished their respective operations.
Multiple Stage Tasks
Multiple stage tasks are very useful when performing time critical tasks. A multiple stage task allows for efficient use of all the system devices and components. Multiple stage methods can be designed in such a way that idle devices can be used by subsequent tasks once a task has finished with them.
For example, you may run many tasks that all repeat the same method that contains a "Preparation" stage followed by an "Acquisition" stage. The desired behavior would be that while a task is in its "Acquisition" stage the next task can start its "Preparation" stage and then wait for the "Acquisition" stage to become available.
In reality, Multiple Stage Acquisitions usually require a third "Handshake" stage to handle the transition of a sample between the stages and associated hardware.