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.

Figure 2-79: Method Flow Editor

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
  • 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
  • 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
    • Write a log message to the Log Messages window
  • 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

  • Wait for Signal
    • Wait for a signal from the REST API

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.