Water flowing from various sources, by Midjourney
Water flowing from various sources, by Midjourney

In my last article I introduced Apache NiFi. I concluded that it is not an appropriate tool for the COE in general, but it did get me thinking quite a bit about flow-based programming, particularly flow-based programming (FBP) and how it could potentially be used by COEs in order to benefit from AI.

What is flow-based programming?

Flow-based programming is a programming paradigm in which the flow of data through a system is described using a directed graph. In a flow-based program, the nodes in the graph represent processing tasks, and the edges between the nodes represent the flow of data between tasks.

In a flow-based program, the tasks are executed when the data they depend on is available, rather than being executed in a predetermined order. This makes flow-based programming well-suited for parallel and distributed computing environments, where tasks can be executed concurrently to take advantage of multiple processors or machines.

Flow-based programming is often used in the context of big data processing, stream processing, and data-intensive scientific applications. Some examples of systems that support flow-based programming include Apache Spark, Apache Flink, and Google Cloud Data Fusion.

How could flow-based programming be used by COEs?

Flow-based programming is a powerful tool that can be used by non-technical people to automate business tasks and processes. In the right conditions, flow-based programming can help non-technical people to quickly and easily build robust, scalable, and reliable systems to support their business needs.

One of the key benefits of flow-based programming is that it is a highly declarative paradigm. This means that, rather than specifying the specific steps to be taken to perform a task, you simply describe the desired outcome. This can make flow-based programming much easier for non-technical people to understand and use, because it allows them to focus on the business logic of their tasks, rather than on the technical details of how to implement them.

Another advantage of flow-based programming is that it is well-suited for parallel and distributed computing environments. This means that flow-based programs can be easily scaled to handle large volumes of data and can be run on multiple processors or machines in order to take advantage of additional computing resources.

One example of how flow-based programming could be used by non-technical people to automate business tasks is in the area of data integration and ETL (extract, transform, and load). flow-based programming can be used to build data pipelines that move data between systems and apply transformations to the data as it is being moved. This can be particularly useful for businesses that need to integrate data from a variety of sources in order to gain insights or make decisions. This is where AI works at its best.

Compared to large organizations, many advanced tools are currently out of reach of the COE. If a simple, user-friendly data aggregation system based on flow-based programming were available to the COE, it could potentially help to level the playing field.

Of course, flow-based programming is not a panacea, and it may not be the right solution for every business task. However, in the right conditions, flow-based programming could be a powerful and effective tool for non-technical people to automate business tasks and processes and begin to take advantage of current the AI revolution.