static function runFromConfig($workflow_config, $workflow_state) {
        $workflow_classname = $workflow_config[self::CONF_HANDLER];
        self::validateConfig($workflow_config);
        self::validateState($workflow_classname, $workflow_state);
        $workflow_params = $workflow_config[self::CONF_PARAMS];
        $workflowClass = new $workflow_classname($workflow_config);
        syslog(LOG_INFO, "Running $workflow_classname with start state " . json_encode($workflow_state));
        call_user_func_array([$workflowClass, "setState"], $workflow_state);
        $end_state = call_user_func_array([$workflowClass, "run"], $workflow_params);
        syslog(LOG_INFO, "Ending $workflow_classname with end state " . json_encode($end_state));
        self::validateState($workflow_config[self::CONF_HANDLER], $end_state);
        return $end_state;
    }