Break your robot into multiple files

There are multiple ways to implement a producer-consumer robot. You could cram all the code inside a single tasks.robot file, which would work (technically). Sometimes, less (files) is not more (maintainability), though.

# One AI-enabled Robot to Rule Them All

IF    True
    Log    Look, Mom! I'm Machine Learning!
ELSE
    Log    DPA, AI, ML, OMG, LOL!
END

RPA Artificial Intelligence Marketing Demystified!

Maintenance-wise, it might be better to split the robot into logical parts. Need to update the producer logic? Find the producer file. Consumer logic - consumer file. Easy peasy! Breaking code down into smaller pieces is a software development best practice.

How do you know how to structure your code beforehand? Well, you don't! But you can still have a high-level guess and start with that guess. The structure will evolve while you write more code. This is expected and totally fine, don't worry. Code. Refactor. Code. Refactor. Rinse and repeat.

Refactoring fresh and even old existing code is recommended. Learn more in the OpportunisticRefactoring article by Martin Fowler.

Instead of a single long robot file, you decide to split the robot into three robot files. One file for the producer robot, another for the consumer robot. The third file will contain all the things needed by both of the robots (such as libraries or variables):

  • producer.robot
  • consumer.robot
  • shared.robot
          ┌──────────────┐
          │ shared.robot │
          └──────────────┘
             ↓        ↓
┌────────────────┐ ┌────────────────┐
│ producer.robot │ │ consumer.robot │
└────────────────┘ └────────────────┘

You rename the tasks.robot file (generated by the template) to producer.robot to communicate the robot's role. You change the name of the task to Produce traffic data work items and add high-level documentation:

producer.robot:

*** Settings ***
Documentation     Inhuman Insurance, Inc. Artificial Intelligence System robot.
...               Produces traffic data work items.

*** Tasks ***
Produce traffic data work items
    Log    Done.

Next, you copy the producer.robot file and rename the copy to consumer.robot:

consumer.robot

*** Settings ***
Documentation     Inhuman Insurance, Inc. Artificial Intelligence System robot.
...               Consumes traffic data work items.

*** Tasks ***
Consume traffic data work items
    Log    Done.

Finally, you create a placeholder file for the shared settings and code. Shared means something needed by both the producer and the consumer robot. Instead of duplicating the same thing inside both robots, place that in another file that can be then imported. Initially, there is nothing to share (yet):

shared.robot:

*** Settings ***
Documentation     Inhuman Insurance, Inc. Artificial Intelligence System robot.
...               Shared settings and code.