The functional components of Jiffy architecture are shown in the Fig-1.1. For an expanded view of the above image, click here.
The main functional components include the Jiffy Server, Jiffy Windows client, and the interfaces to external resources (browser and database).
Jiffy Server is installed in a Linux environment for hosting the application files, logs, and folders. The supported databases are Postgres 9.6 and Oracle 11 / 12.
Jiffy Windows Client application is installed in the client machine (Windows desktop/Windows server/VDI).
The Jiffy Database is the most critical unit where all the information like the bot execution results, bot tasks/scripts, a repository of UI elements, reusable components are all maintained. Typically, the JDI data, JDI Metadata from JDI Studio, and core Jiffy components are stored in different schemas within the same database server.
Lightweight Directory Access Protocol (LDAP) is an internet protocol that is used to access information from directories. The username and password are saved in the LDAP server and then it is integrated to Jiffy to verify whether the user is available in the LDAP server before logging in.
Nginx is a web server (to store, process, and deliver web pages to clients) that can also be used as a reverse proxy, load balancer, mail proxy, and HTTP cache. The communication between client and server takes place using the Secured Hypertext Transfer Protocol (HTTPS).
All four licensing types (Jiffy expiry date, Bot, user, and environment count) are managed by Jiffy Licensing Service (JLS). A heartbeat is sent to the JLS every 5 minutes from the bot to make sure that the connection exists between Bot and JLS. Gunicorn is a Web Server Gateway Interface (WSGI) server implementation that is commonly used to run Python web applications.
The Jiffy Data Interface (JDI) is a case management portal. It is a business user interface to the bot actions. It enables the business users to monitor the bot activities, understand what actions the bots are performing without logging into the RDP and augment bot with additional information from anywhere and anytime. The JDI studio is a designer module used to design the JDI Screens for business. The Security Vault is the central module where all the sensitive data is managed.
The Jiffy Administration Module (JAM) is the administrator console to manage product updates, license upgrades, monitor server infrastructure and for starting and stopping of bots, viewing server log details, etc.
Task Execution: Tasks in Jiffy are executed either from the task design screen or the task execution screen. During the task design, the designer accesses the designer workspace connecting to the Jiffy core and designs/runs the tasks. In case of task execution, the bot designer schedules the tasks to run at a particular time. The user can define the bot clusters within the Jiffy core to run the task. Each block of steps inside a task could be picked by any of the bots in the bot cluster. This enables huge scalability and robustness in case of bot failures. The process flow of task execution is explained as follows:
Alice Request prepares the nodes in the task as messages and then publishes the first node’s message to RabbitMQ (a general-purpose messaging solution). It accepts messages from producers (Alice Request, Alice Response) and delivers them to the consumers (Orchestration Engine, Alice Response).
The Orchestration Engine (ORENG) receives the message from RabbitMQ and performs the node’s job. Depending upon the job type, ORENG delegates the job to a bot manager (JSM) so that the job is assigned to an available bot. After successful completion of the job, the response is published back to RabbitMQ.
Alice Response receives the response message from RabbitMQ, processes and saves the result to the database, completes the node execution, and then publishes a message of the next node to RabbitMQ if the next node is present. This process is continued until the complete execution of the task.
Run details logger is the audit log for tasks in Jiffy. It logs the run details and status of the task.
The Scheduler is a utility in Jiffy that manages all the schedules and triggers the executions accordingly. Once a task is scheduled, Jiffy executes the tasks at the scheduled time without any manual intervention. Tasks can be scheduled to run at a particular time, daily, weekly, or monthly. Service Mix is a component to host web-services within Jiffy.
Jiffy File Service (JFS) is used to store, maintain, and exchange data during execution. The output data is uploaded to the JFS which generates a file ID and that file ID is used to retrieve data. Once the task execution is completed, the related data will be removed from the JFS.
The Expression service is used to run the expressions. This is valid only for old expression nodes that are created before Jiffy 3.2 release. Document server is used for processing pdfs whenever information has to be extracted from the pdf.
The Jiffy Service Manager (JSM) assists in the intelligent distribution and optimal utilization of the Jiffy services. A bot is the jiffy service that runs on any Windows machine to manage all the executions at the client-side. To make sure that the connection between the bot and the bot manager is existing, a message (heartbeat) is sent to the bot manager from the bot for every 1 minute. The Machine-Cluster concept in Jiffy ensures that automatic load balancing is achieved. During the task design, the user may need to record the UI elements on the application to be automated. For this, the UI Learn module is used, which is generally installed on the designer desktops. The familiarised/recorded UI element controls are stored in the Jiffy repository section in the Jiffy application.
Note: All the information is stored on the Jiffy database. No information is stored in the bot machine or on the designer machines.
Windows service the handles login and logoff nodes, lock and unlock functionality, and shut down of jiffy service during log off.
The Jiffy Administrative Module (JAM) interacts with Jasmine to start/stop the bot.