Lifecycle Diagram

sequenceDiagram
    participant User
    participant Campaign
    participant ScriptEngine
    participant CampaignExecution
    participant NotifyFailedChecker
    participant CreateAppChecker
    
    %% Create & Activate
    User->>Campaign: Create Campaign
    Note over User,Campaign: Define expression (JS/Python)
    User->>Campaign: Activate Campaign
    
    alt Manual Campaign
        User->>Campaign: Start Campaign
    else Automatic Campaign
        Note over Campaign: Automatically scheduled
    end
    
    %% Execution
    Campaign->>CampaignExecution: Create execution
    
    %% Client Filtering with Expression
    CampaignExecution->>ScriptEngine: Evaluate expression for each client
    Note over ScriptEngine: client.creditScore > 700 && client.income > 50000
    ScriptEngine-->>CampaignExecution: Return eligible clients
    
    CampaignExecution->>CampaignExecution: Add filtered clients to execution
    
    alt Success
        CampaignExecution->>CampaignExecution: Mark as FINISHED
        CampaignExecution-->>CreateAppChecker: Status changed notification
        CreateAppChecker->>CreateAppChecker: Check if status=FINISHED
        CreateAppChecker->>CreateAppChecker: Create applications
        CreateAppChecker->>CreateAppChecker: Void old applications
    else Error
        CampaignExecution->>CampaignExecution: Mark as EXCEPTION_OCCURRED
        CampaignExecution-->>NotifyFailedChecker: Status changed notification  
        NotifyFailedChecker->>NotifyFailedChecker: Check if status=EXCEPTION_OCCURRED
        NotifyFailedChecker->>NotifyFailedChecker: Send failure notification
        User->>CampaignExecution: Restart or Ignore
    end
    
    %% Deactivate
    User->>Campaign: Deactivate when done

Last updated

Was this helpful?