Posts

Building a Leave Request Workflow Using Flows for APEX in Oracle APEX – Step-by-Step Guide

Image
  Introduction Flows for APEX is a powerful open-source BPMN workflow engine built on top of Oracle APEX. It allows developers and business analysts to model business processes graphically using BPMN 2.0 notation and turn them into executable workflow applications.   In this tutorial, we will build a complete Leave Request Approval System from scratch using Flows for APEX and Oracle APEX. By the end of this guide, you will have a fully working system where:   Employees can  submit  leave requests via a form   Managers receive tasks in their inbox to approve or reject   Automated emails are sent based on the decision   Employees can track their request status in real time   A visual BPMN flow diagram shows the current stage   Prerequisites Before starting, ensure you have: Oracle APEX 23.1 or later Flows for APEX installed Basic knowledge of APEX and PL/SQL SMTP configured (for email notifications) Part 1: Understanding the Flow Diagram...

Building Dynamic Email Templates with Attachments in Oracle APEX Using APEX_MAIL: A Step-by-Step Guide

Image
🔹 Introduction In this blog, we will build a  dynamic Purchase Order Email Notification system  using Oracle APEX Email Templates. You’ll learn how to create reusable templates, use conditional logic, and send emails using PL/SQL.  📌 PART 1 - Create Email Template Step 1: Navigate to Email Templates Go to: App Builder → Your Application → Shared Components → Email Templates → Create Step 2: Enter Template Details Fill the following: Template Name  → PO Approvals Static Identifier  → PO_APPROVALS From Name  → ERP System From Email  →  noreply@yourcompany.com Subject  → PO #PO_NUMBER# - #SUBJECT# 👉 Use placeholders like  #PO_NUMBER#  to inject dynamic values. Step 3: Add Header Content <p><strong> Hello from Our ERP System </strong></p> <hr/> Step 4: Add Body Content Include placeholders ( #APPROVER_NAME# , #PO_STATUS# ) Add HTML table for PO details Use directives: {if/} → Conditional display {case/...