class ProcessHandler {

    public String createProcess(String userId, Process process, String externalSourceName) throws InvalidParameterException,
                                                                                                  UserNotAuthorizedException,
                                                                                                  PropertyServerException {
        final String methodName = "createProcess";

        initializeAssetZoneMembership(process);
        securityVerifier.validateUserForAssetCreate(userId, process);
        validateProcessParameters(userId, process.getQualifiedName(), methodName);

        ProcessPropertiesBuilder builder = new ProcessPropertiesBuilder(process.getQualifiedName(), process.getName(), process.getDisplayName(),
                process.getDescription(), process.getOwner(), process.getOwnerType(), process.getZoneMembership(), process.getLatestChange(),
                process.getFormula(), null, null, repositoryHelper, serverName, serviceName);

        String processGUID = dataEngineCommonHandler.createExternalEntity(userId, builder.getInstanceProperties(methodName), InstanceStatus.DRAFT,
                ProcessPropertiesMapper.PROCESS_TYPE_NAME, externalSourceName);

        classifyAsset(userId, process, processGUID);

        return processGUID;
    }

    public  ProcessHandler(String serviceName, String serverName, InvalidParameterHandler invalidParameterHandler,
                          RepositoryHandler repositoryHandler, OMRSRepositoryHelper repositoryHelper, AssetHandler assetHandler,
                          DataEngineCommonHandler dataEngineCommonHandler, List<String> defaultZones, List<String> supportedZones);

}