visParaflow is a powerful and versatile workflow modeler and script generator designed to streamline and automate your processes. It is cross-platform, supporting Windows, macOS, and Linux, ensuring that you can use it on any operating system of your choice.
- Workflow Modeling: Easily create and manage complex workflows with an intuitive interface.
- Cross-Platform Compatibility: Use on Windows, macOS, and Linux.
- Python Script Generation: Automatically generate Python scripts directly from your workflows.
- Direct Workflow Execution: Run your workflows directly from the user interface without the need for additional tools.
- Extensibility: Highly open and customizable, allowing users to plug in custom modules effortlessly.
With visParaflow, you can enhance productivity and efficiency by automating repetitive tasks and integrating custom solutions seamlessly.
# Clone the repo.
git clone https://github.com/dongzgh/vis.process.git
cd vis.process
# List all presets (optional)
cmake --list-presets=all
"(macOS) Debug"
"(macOS) Release"
"(Windows) Debug"
"(Windows) Release"
"(Ubuntu) Debug"
"(Ubuntu) Release"
# Cconfigure project.
cmake --preset "(macOS) Debug" # based on the platform and configuration
# Buil the project.
cd build
cd debug # or "release"
cmake --build .
# Run the program.
cd bin # vis.process/build/debug/bin or vis.process.process/build/release/bin
./visParaflow # on windows: visParaflow.exe- Turn off
USE_CPACKvariable inCMakeLists.txt F1to openCommand Paletteand selectCMake: Delete Cache and ReconfigF1to openCommand Paletteand selectCMake: Clean BuildF1to openCommand Paletteand selectCMake: Install- Deployable is created in the
deploy/windowsfolder - Open
package/windows/make-app.nsiin Visual Studio Code F1to openCommand Paletteand selectTasks: Run Task- Select
Build NSIS Scriptfrom the drop down list NSISinstaller is created in thesetup/windowsfolder
- Turn on
USE_CPACKvariable inCMakeLists.txt F1to openCommand Paletteand selectCMake: Delete Cache and ReconfigF1to openCommand Paletteand selectCMake: Clean BuildF1to openCommand Paletteand selectCMake: Run CPack- Deployable is created in
setup/windows/_CPack_Packages/win64/NSIS/visParaflow-<version> NSISinstaller is created in thesetup/windowsfolder
- Turn off
USE_CPACKvariable inCMakeLists.txt F1to openCommand Paletteand selectCMake: Delete Cache and ReconfigF1to openCommand Paletteand selectCMake: Clean BuildF1to openCommand Paletteand selectCMake: Install- Deployable is created in the
deploy/ubuntufolder - Open
package/macos/make-app.shin Visual Studio Code F1to openCommand Paletteand selectTasks: Run Task- Select
Run Shell Scriptfrom the drop down list DMGpackage is created in thesetup/macosfolder
- Turn on
USE_CPACKvariable inCMakeLists.txt F1to openCommand Paletteand selectCMake: Delete Cache and ReconfigF1to openCommand Paletteand selectCMake: Clean BuildF1to openCommand Paletteand selectCMake: Run CPackDMGpackage is created in thesetup/macosfolder and installed in/Applications
- Turn off
USE_CPACKvariable inCMakeLists.txt F1to openCommand Paletteand selectCMake: Delete Cache and ReconfigF1to openCommand Paletteand selectCMake: Clean BuildF1to openCommand Paletteand selectCMake: Install- Deployable is created in the
deploy/ubuntufolder - Open
package/ubuntu/make-app.shin Visual Studio Code F1to openCommand Paletteand selectTasks: Run Task- Select
Run Shell Scriptfrom the drop down list DEBIANpackage is created in thesetup/ubuntufolder
- Turn on
USE_CPACKvariable inCMakeLists.txt F1to openCommand Paletteand selectCMake: Delete Cache and ReconfigF1to openCommand Paletteand selectCMake: Clean BuildF1to openCommand Paletteand selectCMake: Run CPack- Deployable is created in
setup/ubuntu/_CPack_Packages/Linux/DEB/visParaflow-<version> DEBIANpackage is created in thesetup/ubuntufolder
- Check the
debianpackage:
ar x visParaflow-<version>.deb
mkdir tmp
tar -xzf data.tar.gz -C tmp # for gz format
tar -xvf data.tar.zst -C tmp # for zst format- Install/uninstall the package:
sudo dpkg -i visParaflow-<version>.deb # install
sudo dpkg -r visParaflow-<version>.deb # uninstall- Check and install missing libraries:
# Check missing shared libraries.
ldd /opt/Qt/6.8.1/gcc_64/plugins/xcbglintegrations/libqxcb-egl-integration.so | grep -G "not found"
# Check existing libraries.
dpkg -l libxcb*
dpkg -L libxcb-cursor0
# Search for missing libraries.
sudo apt search libxcb
sudo apt-get install libxcb-cursor0
## Install some common missing libraries as follows:
# sudo apt-get install libxcb-cursor0
# sudo apt-get install libxkbcommon-x11-0
# sudo apt-get install libxcb-icccm4
# sudo apt-get install libxcb-keysyms1
# sudo apt-get install libxcb-xkb1
# Check PATH settings.
export PATH=/usr/lib:/usr/lib/x86_64-linux-gnussh -i ./vm_key.pem <azureuser>@40.76.3.96
az vm open-port --resource-group playvm --name vm --port 3389
scp -i ./vm_key.pem ./visParaflow-<version>.deb azureuser@40.76.3.96:/home/azureuser/The dat folder should contain the following structure to organize your workflow project data:
dat/
├── my_workflow/
│ ├── ico/
│ │ ├── section1
| | | ├── icon1.ico
| | | ├── ...
│ │ ├── secion2
| | | ├── icon1.ico
| | | ├── ...
│ ├── tpl/
│ │ ├── section1
| | | ├── tpl1.py
| | | ├── ...
│ │ ├── secion2
| | | ├── tpl1.py
| | | ├── ...
│ ├── res/
│ │ ├── ...
│ ├── wf/
│ │ ├── ...
| ├──section1.json
| ├──section2.json
| ├──...
| ├──main.json
| ├──requirements.txt
my_workflow/: This is your custom workflow project folder.ico/: Place your icon files here, organized by sections.tpl/: Place your Python template files here, organized by sections.res/: Place your resource or asset files here.wf/: Place your workflow files here.
section[#n].json: section description filemain.json: main description filerequirements.txt: Python package requirements file.
The description files in this project are structured in JSON format to provide a clear and organized way to define various sections and main configurations. These files include details about the project, such as the product name, version, and included components. Each section is described in its respective JSON file, ensuring modularity and ease of maintenance. Below is an example of a description file format:
{
"product": "ImageProcessor",
"version": "2025.1",
"include": [
"./core.json",
"./process.json"
]
}The section JSON file is structured to define the core modules and nodes of the project. Each node represents a specific operation or task within the module. Below is a breakdown of how to declare each section in the section JSON file:
module: Specifies the name of the module.nodes: An array of node objects, each representing a distinct operation.
Each node object includes the following properties:
name: The name of the node.description: A brief description of the node's functionality.icon: The filename of the icon representing the node.parameters: An array of parameter objects, each defining an input or output parameter for the node.
Each parameter object includes:
-
name: The name of the parameter. -
io: Specifies whether the parameter is an input (in) or output (out). -
type: The data type of the parameter (e.g.,string,object). -
default: The default value for the parameter (if applicable). -
file: A Boolean indicating if the parameter is a file path. -
title: The title for the file dialog (if applicable). -
filter: The file filter for the file dialog (if applicable). -
template: The filename of the Python template script associated with the node.
Example structure:
{
"module": "Core",
"nodes": [
{
"name": "Open Image",
"description": "Open image for editing.",
"icon": "open-image.ico",
"parameters": [
{
"name": "Path",
"io": "in",
"type": "string",
"default": "../../../dat/im/res/landscape.jpg",
"file": true,
"title": "Open Image",
"filter": "Image Files (*.jpg;*.jpeg;*.png;*.bmp;*.gif);;All Files (*.*)"
},
{
"name": "Image",
"io": "out",
"type": "object"
}
],
"template": "open-image.py"
},
{
"name": "Save Image",
"description": "Save image to file.",
"icon": "save-image.ico",
"parameters": [
{
"name": "Image",
"io": "in",
"type": "object"
},
{
"name": "Path",
"io": "in",
"type": "string",
"default": "../../../dat/im/res/result.jpg",
"file": true,
"title": "Save Image As",
"filter": "Image Files (*.jpg;*.jpeg;*.png;*.bmp;*.gif);;All Files (*.*)"
}
],
"template": "save-image.py"
}
]
}cd dat/my_workflow
python -m venv .env
source .env/bin/activate
python -m pip install -r requirements.txt- Run
visParaflow - Click
Open Palletand selectmy_workflow/main.jsonto load your workflow pallet definitions - Click node and place it in the scene viewer area
- Drag to connect node parameters
- Once it's down, click
Generate Scriptto generate script file, orRun Workflowto run the script directly - Click
Save Workflowto save the workflow
