public static function fromResource(core_kernel_classes_Resource $resource) {
	    $values = $resource->getPropertiesValues(array(
			WfEngineOntology::PROPERTY_ACTUAL_PARAMETER_FORMAL_PARAMETER,
			WfEngineOntology::PROPERTY_ACTUAL_PARAMETER_CONSTANT_VALUE,
			WfEngineOntology::PROPERTY_ACTUAL_PARAMETER_PROCESS_VARIABLE
	    ));
	    if (count($values[WfEngineOntology::PROPERTY_ACTUAL_PARAMETER_FORMAL_PARAMETER]) != 1) {
	        throw new common_exception_InconsistentData('Actual variable '.$resource->getUri().' missing formal parameter');
	    }
	    if (count($values[WfEngineOntology::PROPERTY_ACTUAL_PARAMETER_CONSTANT_VALUE]) + count($values[WfEngineOntology::PROPERTY_ACTUAL_PARAMETER_PROCESS_VARIABLE]) != 1) {
	        throw new common_exception_InconsistentData('Actual variable '.$resource->getUri().' invalid, '
	            .count($values[WfEngineOntology::PROPERTY_ACTUAL_PARAMETER_CONSTANT_VALUE]).' constant values and '
                .count($values[WfEngineOntology::PROPERTY_ACTUAL_PARAMETER_PROCESS_VARIABLE]).' process variables');
	    }
	    if (count($values[WfEngineOntology::PROPERTY_ACTUAL_PARAMETER_CONSTANT_VALUE]) > 0) {
	        $param = new tao_models_classes_service_ConstantParameter(
	            current($values[WfEngineOntology::PROPERTY_ACTUAL_PARAMETER_FORMAL_PARAMETER]),
	            current($values[WfEngineOntology::PROPERTY_ACTUAL_PARAMETER_CONSTANT_VALUE])
	       );
	    } else {
	        $param = new tao_models_classes_service_VariableParameter(
	            current($values[WfEngineOntology::PROPERTY_ACTUAL_PARAMETER_FORMAL_PARAMETER]),
	            current($values[WfEngineOntology::PROPERTY_ACTUAL_PARAMETER_PROCESS_VARIABLE])
	        );
	    }
	    return $param;
	}