Zyah Solutions

View Original

Bowzer the Browser

Who Moved My Case Structure?

When people try out Actor Framework (AF) for the first time, one of the biggest differences to get used to is that a lot of the complexity that was on the block diagram is moved to the LabVIEW project/files on disk. In most QMHs there’s a main case structure where each case represents a different state or instruction. In AF applications, each case is instead a different VI.

Left: QSM case structure Right: Actor Payload Method


There are advantages that come with AF’s take on the Command Pattern, but one complaint we at Zyah hear over and over is that it’s hard to discover what capabilities (via AF Msg API) any given Actor has. Because an Actor’s messages may be contained not only within the Actor itself, but also from any ancestor Actor, it can take a lot of project navigation to find all the messages that any given actor supports.

The Bowzer the Browser aims to alleviate this pain point.

Introducing the Bowzer the Browser

Installing the Bowzer the Browser VIP adds a menu item to the LabVIEW Tools menu that launches the utility seen below

Let’s a take a closer look at the GUI components that make up Bowzer.

The Actor List

Here you can find a list of all the actors in your project. Clicking on an actor will show all of that actor’s messages (more details below). The search bar at the top allows you to quickly find specific actors and the “Refresh” button will update the list of actors should you make changes to your project while Bowzer is open.

If you want to go from browsing an actor within Bowzer to its location in your LabVIEW project, right-click on any actor and choose “Show Actor Class in Project”.

The AF Message Tree

The message tree will show all the AF Msgs that can be sent to the actor selected in the Actor List section of the GUI. This includes messages contained within the actor itself as well as messages inherited from ancestor actors AND interfaces. The actor/interface under which the payload method is listed is where the actual message class resides.

Dynamic dispatch methods are denoted by a * at the end of the Payload Method name. Clicking on those messages will also open up an Implementation Selection window so that you can select other overrides of that payload method.

By default, the Implementation Selection window will show the override used by the currently selected Actor.

If you right-click on a payload method, you’ll see more options to show files related to that specific payload method within the LabVIEW project.

The Block Diagram Viewer

This where the block diagram of the selected payload method actually gets down. As you browse different payload methods, this panel will automatically update with the appropriate block diagram.

Closing Notes

Whether you’re new to Actor Framework and are missing the ease of browsing one centralized case structure or experienced in the AF world, but find yourself disoriented when revisiting or inheriting an older AF project, we hope that Bowzer makes your LabVIEW development a little bit easier.

Bowzer works with normal AF source code as well as PPLs in LabVIEW 2020+. Still, we haven’t exhaustively tested Bowzer’s functionality for LabVIEW RT targets so if that’s your primary use case, we’d appreciate any feedback you might have!

We’re proud of the features Bowzer already contains, but there’s still more to come. Keep your eyes on this spot for future blog posts as we add more and more functionality to Bowzer!

Where to Get It

  1. VIPM (VI package) - https://www.vipm.io/package/zyah_solutions_lib_bowzer_the_browser/

  2. GitLab (source) - https://gitlab.com/zyah-solutions/community-tools/bowzer-the-browser