@Override
    public boolean equals(Object o) {
        if (this == o) {
            return true;
        }
        if (o == null || getClass() != o.getClass()) {
            return false;
        }
        Workflow workflow = (Workflow) o;
        return getEndTime() == workflow.getEndTime()
                && getWorkflowVersion() == workflow.getWorkflowVersion()
                && getStatus() == workflow.getStatus()
                && Objects.equals(getWorkflowId(), workflow.getWorkflowId())
                && Objects.equals(getParentWorkflowId(), workflow.getParentWorkflowId())
                && Objects.equals(getParentWorkflowTaskId(), workflow.getParentWorkflowTaskId())
                && Objects.equals(getTasks(), workflow.getTasks())
                && Objects.equals(getInput(), workflow.getInput())
                && Objects.equals(getOutput(), workflow.getOutput())
                && Objects.equals(getWorkflowName(), workflow.getWorkflowName())
                && Objects.equals(getCorrelationId(), workflow.getCorrelationId())
                && Objects.equals(getReRunFromWorkflowId(), workflow.getReRunFromWorkflowId())
                && Objects.equals(getReasonForIncompletion(), workflow.getReasonForIncompletion())
                && Objects.equals(getEvent(), workflow.getEvent())
                && Objects.equals(getTaskToDomain(), workflow.getTaskToDomain())
                && Objects.equals(
                        getFailedReferenceTaskNames(), workflow.getFailedReferenceTaskNames())
                && Objects.equals(getFailedTaskNames(), workflow.getFailedTaskNames())
                && Objects.equals(
                        getExternalInputPayloadStoragePath(),
                        workflow.getExternalInputPayloadStoragePath())
                && Objects.equals(
                        getExternalOutputPayloadStoragePath(),
                        workflow.getExternalOutputPayloadStoragePath())
                && Objects.equals(getPriority(), workflow.getPriority())
                && Objects.equals(getWorkflowDefinition(), workflow.getWorkflowDefinition())
                && Objects.equals(getVariables(), workflow.getVariables())
                && Objects.equals(getLastRetriedTime(), workflow.getLastRetriedTime());
    }
A string representation of all relevant fields that identify this workflow. Intended for use
in log and other system generated messages.
common/src/main/java/com/netflix/conductor/common/run/Workflow.java