corrad-bp/doc/PROCESS_BUILDER_IMPROVEMENTS.md
Afiq b3ca62b548 Enhance Process Builder Drag-and-Drop Functionality
- Improved drag-and-drop support in the Process Builder by setting drag data to 'text/plain' for better compatibility, especially on Mac.
- Added visual feedback during drag operations by applying a 'dragging' class to the event target.
- Updated the drop event handler to parse the dragged data correctly and prevent event propagation.
- Introduced a computed property for gateway available variables to enhance node configuration options.
- Adjusted the layout of the properties panel to accommodate a new VariableManager component for better variable management.
2025-05-15 11:53:59 +08:00

5.1 KiB

Process Builder Improvements

Overview

This document outlines the planned improvements for the Process Builder core components. The improvements are designed to be manageable and maintainable while adding essential functionality.

Variable System

1. Global Variables

{
  name: 'string',
  type: 'string|number|boolean|object|array',
  defaultValue: any,
  description: 'string',
  scope: 'global',
  isRequired: boolean,
  isReadOnly: boolean
}

2. Process Variables

{
  name: 'string',
  type: 'string|number|boolean|object|array',
  defaultValue: any,
  description: 'string',
  scope: 'process',
  isRequired: boolean,
  isReadOnly: boolean,
  direction: 'in|out|inout' // for process arguments
}

3. Task/Form Arguments

{
  name: 'string',
  type: 'string|number|boolean|object|array',
  defaultValue: any,
  description: 'string',
  direction: 'in|out|inout',
  isRequired: boolean,
  validation: {
    rules: [],
    customValidation: 'string' // custom validation script
  }
}

Core Components Improvements

1. Start Event

{
  type: 'start',
  data: {
    description: 'Process start point',
    triggerType: 'manual', // manual, scheduled
    schedule: null, // for scheduled triggers
    variables: {
      input: [], // process input arguments
      output: [] // process output arguments
    },
    globalVariables: [] // global variables used in this process
  }
}

2. End Event

{
  type: 'end',
  data: {
    description: 'Process end point',
    resultType: 'success', // success, error
    variables: {
      input: [], // variables required for end event
      output: [] // variables to be returned
    },
    returnValues: [] // values to return to calling process
  }
}

3. Task

{
  type: 'task',
  data: {
    description: 'A general task',
    assignee: '',
    taskType: 'manual', // manual, automated
    priority: 'medium', // low, medium, high
    dueDate: null,
    variables: {
      input: [], // task input arguments
      output: [] // task output arguments
    },
    notifications: {
      onAssign: true,
      onComplete: true
    }
  }
}

4. Form Task

{
  type: 'form',
  data: {
    description: 'Form submission task',
    formId: null,
    formName: null,
    formSettings: {
      allowDraft: true,
      autoSave: true
    },
    variables: {
      input: [], // form input arguments
      output: [] // form output arguments
    },
    dataMapping: {
      input: [], // map process variables to form
      output: [] // map form to process variables
    }
  }
}

5. Gateway

{
  type: 'gateway',
  data: {
    description: 'Decision gateway',
    conditions: [],
    defaultPath: 'Default',
    gatewayType: 'exclusive', // exclusive, parallel
    variables: {
      input: [], // variables needed for conditions
      output: [] // variables to pass to next node
    },
    timeout: {
      enabled: false,
      duration: 0
    }
  }
}

New Core Components

1. Script Task

{
  type: 'script',
  data: {
    description: 'Execute custom script',
    scriptType: 'javascript',
    script: '',
    variables: {
      input: [], // script input arguments
      output: [] // script output arguments
    },
    timeout: 30 // seconds
  }
}

Implementation Priority

Phase 1 - Essential Improvements

  1. Implement basic variable system
    • Global variables
    • Process variables
    • Task/Form arguments
  2. Add basic trigger types to Start Event
  3. Add result types to End Event
  4. Add task priorities and due dates
  5. Add form settings for drafts and auto-save

Phase 2 - Enhanced Features

  1. Add variable validation system
  2. Add data mapping for forms
  3. Add script task component
  4. Add timeout handling
  5. Add notifications system

Phase 3 - Advanced Features

  1. Add subprocess component
  2. Add advanced gateway conditions
  3. Add process templates
  4. Add process versioning
  5. Add process analytics

Variable System Features

1. Variable Types

  • String
  • Number
  • Boolean
  • Object
  • Array
  • Date
  • File
  • Custom types

2. Variable Scopes

  • Global (accessible across all processes)
  • Process (accessible within a process)
  • Task/Form (accessible within a task/form)
  • Local (accessible within a script)

3. Variable Operations

  • Create/Delete
  • Read/Write
  • Copy/Move
  • Transform
  • Validate
  • Persist

4. Variable Passing

  • Process to Process
  • Task to Task
  • Form to Process
  • Script to Process
  • Gateway Conditions

Notes

  • Keep improvements focused on essential functionality
  • Maintain backward compatibility
  • Ensure easy maintenance
  • Document all new features
  • Add proper validation
  • Include error handling
  • Implement proper variable scoping
  • Add variable type checking
  • Include variable persistence

Future Considerations

  • Process templates
  • Process versioning
  • Process analytics
  • Advanced notifications
  • Custom validations
  • Process documentation
  • Process testing
  • Process deployment
  • Variable encryption
  • Variable versioning
  • Variable dependencies

Last updated: June 10, 2024