package com.flowable.devops.workflow.model;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.Map;

/**
 * 节点执行上下文
 * 
 * 提供节点执行时所需的上下文信息
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class NodeExecutionContext {
    
    /**
     * 工作流ID
     */
    private String workflowId;
    
    /**
     * 执行ID
     */
    private String executionId;
    
    /**
     * 当前节点ID
     */
    private String nodeId;
    
    /**
     * 工作流变量
     */
    private Map<String, Object> variables;
    
    /**
     * 上游节点输出数据
     */
    private Map<String, Object> nodes;
    
    /**
     * 环境变量
     */
    private Map<String, String> env;
    
    /**
     * 额外的上下文数据
     */
    private Map<String, Object> extras;
    
    /**
     * 获取工作流变量
     */
    public Object getVariable(String key) {
        return variables != null ? variables.get(key) : null;
    }
    
    /**
     * 获取节点数据
     */
    public Object getNodeData(String nodeId) {
        return nodes != null ? nodes.get(nodeId) : null;
    }
    
    /**
     * 获取环境变量
     */
    public String getEnv(String key) {
        return env != null ? env.get(key) : null;
    }
    
    /**
     * 获取扩展数据
     */
    public Object getExtra(String key) {
        return extras != null ? extras.get(key) : null;
    }
}