Automation Robots
Required Access Level
Admin or Super Admin
What is a robot?
A robot is an automated program that executes tasks without human intervention. Robots can:
- Start processes automatically at scheduled times
- Fetch data from external systems to feed Flowi Agentic
- Execute steps that do not require human interaction
- Integrate with ERPs, tax systems, and other platforms
Each robot is a pre-compiled JAR file uploaded to the platform, operating on a CRON schedule.
Attention: Robots ≠ Agents
"Robots" handle rigid systemic integrations (code). If you need cognitive automation (reading PDFs, interpreting free-form text, or making flexible AI-based decisions), refer to the AI Agents manual.
Listing Robots
Access Automation → Robots in the sidebar.
The screen displays:
- Robot name
- Status (active / inactive)
- Next scheduled execution
- Last execution result (success / failure)
Registering a new Robot
- Click on New Robot
- Fill in:
- Name — robot identification
- Schedule — cron expression (e.g.:
0 8 * * MON= every Monday at 8 AM) - JAR File — upload the compiled file
- Parameters — optional JSON configuration
- Click Save
Cron Expression
Format: minute hour day-of-month month day-of-week
Examples:
0 8 * * *— every day at 8 AM0 8 * * MON— every Monday at 8 AM*/30 * * * *— every 30 minutes
Activating and Deactivating
Use the active/inactive toggle in the list to control whether the schedule is running. A deactivated robot will not execute but remains registered.
Manual Execution
Click Run now to trigger the robot outside of its schedule. Useful for testing.
Monitoring Executions
The execution history for each robot shows:
- Start and end date/time
- Status:
SUCCESSorFAILED - Output log or error message
In case of failure
Robot failures are logged but do not interrupt other processes. Check the log to diagnose the issue and fix the JAR before reactivating.
JAR Development (Native API)
To ensure security and performance, Flow.IA robots run isolated in a Sandbox (URLClassLoader) within the same virtual machine as the system. They receive a RobotContext that provides access to global platform resources without the need for REST calls or Token authentication.
Java Code Structure
To build your robot, implement the FlowIaRobot interface:
import ia.flow.engine.FlowIaRobot;
import ia.flow.engine.RobotContext;
import java.util.Map;
public class MyRobot implements FlowIaRobot {
@Override
public void execute(RobotContext context) {
context.log("Scanning CMS...");
// Direct access to JSON Parameters provided in the UI
Map<String, String> params = context.getParameters();
// Native API Access: Consume or write to the current Tenant's CMS
context.getCms().getRecordsByCollectionSlug("invoices")
.forEach(record -> context.log("Processing invoice: " + record));
// Native API Access: Start new processes
context.getProcesses().startProcess("billing-workflow", Map.of("source", "robot"));
// Native API Access: Query organizational members
var members = context.getTenant().getMemberEmails();
context.log("Members notified: " + members.size());
// Native API Access: Upload files (e.g. attaching to a process instance or task)
byte[] pdfContent = new byte[]{ /* ... file bytes ... */ };
java.util.UUID attachmentId = context.getStorage().uploadAttachment(
"instance", "instance-uuid-here", "invoice.pdf", "application/pdf", pdfContent
);
context.log("Uploaded invoice attachment: " + attachmentId);
}
}The RobotContext is your isolated facade to Flow.IA. It guarantees that any operation (like getCms(), getProcesses(), or getStorage()) is strictly restricted to data belonging only to the active robot's Tenant, preventing a robot from leaking data from neighboring companies on the platform.