Principes de base des locataires

Les locataires sont des entités qui possèdent les objets entreprise et emploi qui leur sont affectés. Ils forment une couche d'organisation intermédiaire entre un projet Google Cloud Platform et les données importées. Les locataires vous permettent d'isoler différents groupes de données sans devoir utiliser plusieurs projets en empêchant le partage de données entre différents locataires. L'architecture mutualisée est utile dans les cas où vous avez plusieurs clients et que vous ne souhaitez pas partager de données entre eux, mais que vous souhaitez utiliser le même projet GCP pour la facturation et la création de rapports en interne. Exemple :

  • Des fournisseurs de sites de recrutement qui créent des sites de recrutement pour des organisations comportant plusieurs filiales.
  • Des agences de recrutement qui développent des systèmes de suivi des candidats pour plusieurs entreprises.

Chaque projet Google Cloud Platform se voit attribuer par défaut un tenant_id de locataire unique. Vous pouvez éventuellement modifier le paramètre par défaut en créant plus d'un locataire dans un projet donné.

Les locataires sont complètement isolés les uns des autres. Toutes les API ne demandent qu'un locataire unique pour éviter que des données ne soient interrogées sur plusieurs locataires au cours d'un seul appel d'API. Le machine learning (ML) traite également les locataires comme des unités distinctes et ne franchit pas les barrières entre ceux-ci. Un projet peut accepter autant de locataires que nécessaire.

Locataires par défaut

Dans les versions de Job Search v4beta1 et ultérieures, une entité locataire est requise. Tous les projets se voient attribuer par défaut un tenant_id de locataire unique. Si vous ne souhaitez pas utiliser plusieurs locataires, vous pouvez employer l'une des méthodes suivantes :

  1. Utilisez le locataire par défaut de votre projet (recommandé). Pour ce faire, vous n'avez pas besoin de faire référence au locataire de manière explicite. En utilisant le format projects/{project_id}/jobs/{job_id}, le backend Cloud Talent Solution considérera que vous utilisez le locataire par défaut.

  2. Créez un locataire unique et utilisez celui-ci à la place du locataire par défaut. Si vous créez votre propre locataire, vous devez le référencer : projects/{project_id}/tenants/{tenant_id}/jobs/{job_id}.

Le tenant_id par défaut est unique à chaque projet et n'est jamais écrasé ni remplacé si vous créez des locataires supplémentaires. Vous ne pouvez pas appeler de méthodes CRUD sur le locataire par défaut.

Locataires créés (facultatif)

La création de vos propres locataires est facultative. Le backend CTS attribue un locataire par défaut à chaque projet Job Search. Si vous ne souhaitez pas utiliser l'architecture mutualisée pour séparer les subdivisions de vos données, nous vous recommandons d'utiliser le locataire par défaut.

Créer un locataire

Vous devez créer une valeur de externalId unique et l'attribuer au nouveau locataire. L'appel renvoie ensuite un élément name unique attribué par notre système backend, qui est également attribué à ce locataire. Assurez-vous d'enregistrer et de stocker les valeurs des éléments name et externalId, car elles permettent de mettre à jour/supprimer/référencer.

L'exemple de code ci-dessous permet de créer un nouveau locataire :

Java


import com.google.cloud.talent.v4beta1.CreateTenantRequest;
import com.google.cloud.talent.v4beta1.ProjectName;
import com.google.cloud.talent.v4beta1.Tenant;
import com.google.cloud.talent.v4beta1.TenantServiceClient;
import java.io.IOException;

public class JobSearchCreateTenant {

  public static void createTenant() throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "your-project-id";
    String externalId = "your-external-id";
    createTenant(projectId, externalId);
  }

  // Create Tenant for scoping resources, e.g. companies and jobs.
  public static void createTenant(String projectId, String externalId) throws IOException {
    try (TenantServiceClient tenantServiceClient = TenantServiceClient.create()) {
      ProjectName parent = ProjectName.of(projectId);
      Tenant tenant = Tenant.newBuilder().setExternalId(externalId).build();

      CreateTenantRequest request =
          CreateTenantRequest.newBuilder().setParent(parent.toString()).setTenant(tenant).build();

      Tenant response = tenantServiceClient.createTenant(request);
      System.out.println("Created Tenant");
      System.out.printf("Name: %s\n", response.getName());
      System.out.printf("External ID: %s\n", response.getExternalId());
    }
  }
}

PHP

Pour en savoir plus sur l'installation et la création d'un client Cloud Talent Solution, consultez la page Bibliothèques clientes Cloud Talent Solution.

require __DIR__ . '/vendor/autoload.php';

use Google\Cloud\Talent\V4beta1\TenantServiceClient;
use Google\Cloud\Talent\V4beta1\Tenant;

/** Create Tenant for scoping resources, e.g. companies and jobs */
function sampleCreateTenant($projectId, $externalId)
{

    $tenantServiceClient = new TenantServiceClient();

    // $projectId = 'Your Google Cloud Project ID';
    // $externalId = 'Your Unique Identifier for Tenant';
    $formattedParent = $tenantServiceClient->projectName($projectId);
    $tenant = new Tenant();
    $tenant->setExternalId($externalId);

    try {
        $response = $tenantServiceClient->createTenant($formattedParent, $tenant);
        printf('Created Tenant'.PHP_EOL);
        printf('Name: %s'.PHP_EOL, $response->getName());
        printf('External ID: %s'.PHP_EOL, $response->getExternalId());
    } finally {
        $tenantServiceClient->close();
    }

}

Ruby

Pour en savoir plus sur l'installation et la création d'un client Cloud Talent Solution, consultez la page Bibliothèques clientes Cloud Talent Solution.


# Create Tenant for scoping resources, e.g. companies and jobs
def sample_create_tenant project_id, external_id
  # Instantiate a client
  tenant_client = Google::Cloud::Talent::TenantService.new version: :v4beta1

  # project_id = "Your Google Cloud Project ID"
  # external_id = "Your Unique Identifier for Tenant"
  formatted_parent = tenant_client.class.project_path(project_id)
  tenant = { external_id: external_id }

  response = tenant_client.create_tenant(formatted_parent, tenant)
  puts "Created Tenant"
  puts "Name: #{response.name}"
  puts "External ID: #{response.external_id}"
end

C#

Pour en savoir plus sur l'installation et la création d'un client Cloud Talent Solution, consultez la page Bibliothèques clientes Cloud Talent Solution.

public static object CreateTenant(string projectId, string externalId)
{
    TenantServiceClient tenantServiceClient = TenantServiceClient.Create();
    Tenant tenant = new Tenant
    {
        ExternalId = externalId,
    };
    ProjectName parent = new ProjectName(projectId);
    CreateTenantRequest request = new CreateTenantRequest
    {
        ParentAsProjectName = parent,
        Tenant = tenant
    };
    Tenant response = tenantServiceClient.CreateTenant(request);

    Console.WriteLine($"Created Tenant.");
    Console.WriteLine($"Name: {response.Name}");
    Console.WriteLine($"External ID: {response.ExternalId}");
    return 0;
}

Récupérer un locataire

Java

Pour en savoir plus sur l'installation et la création d'un client Cloud Talent Solution, consultez la page Bibliothèques clientes Cloud Talent Solution.


import com.google.cloud.talent.v4beta1.GetTenantRequest;
import com.google.cloud.talent.v4beta1.Tenant;
import com.google.cloud.talent.v4beta1.TenantName;
import com.google.cloud.talent.v4beta1.TenantServiceClient;
import java.io.IOException;

public class JobSearchGetTenant {

  public static void getTenant() throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "your-project-id";
    String tenantId = "your-tenant-id";
    getTenant(projectId, tenantId);
  }

  // Get Tenant by name.
  public static void getTenant(String projectId, String tenantId) throws IOException {
    try (TenantServiceClient tenantServiceClient = TenantServiceClient.create()) {
      TenantName name = TenantName.of(projectId, tenantId);

      GetTenantRequest request = GetTenantRequest.newBuilder().setName(name.toString()).build();

      Tenant response = tenantServiceClient.getTenant(request);
      System.out.printf("Name: %s\n", response.getName());
      System.out.printf("External ID: %s\n", response.getExternalId());
    }
  }
}

PHP

Pour en savoir plus sur l'installation et la création d'un client Cloud Talent Solution, consultez la page Bibliothèques clientes Cloud Talent Solution.

require __DIR__ . '/vendor/autoload.php';

use Google\Cloud\Talent\V4beta1\TenantServiceClient;

/** Get Tenant by name */
function sampleGetTenant($projectId, $tenantId)
{

    $tenantServiceClient = new TenantServiceClient();

    // $projectId = 'Your Google Cloud Project ID';
    // $tenantId = 'Your Tenant ID';
    $formattedName = $tenantServiceClient->tenantName($projectId, $tenantId);

    try {
        $response = $tenantServiceClient->getTenant($formattedName);
        printf('Name: %s'.PHP_EOL, $response->getName());
        printf('External ID: %s'.PHP_EOL, $response->getExternalId());
    } finally {
        $tenantServiceClient->close();
    }

}

Ruby

Pour en savoir plus sur l'installation et la création d'un client Cloud Talent Solution, consultez la page Bibliothèques clientes Cloud Talent Solution.


# Get Tenant by name
def sample_get_tenant project_id, tenant_id
  # Instantiate a client
  tenant_client = Google::Cloud::Talent::TenantService.new version: :v4beta1

  # project_id = "Your Google Cloud Project ID"
  # tenant_id = "Your Tenant ID"
  formatted_name = tenant_client.class.tenant_path(project_id, tenant_id)

  response = tenant_client.get_tenant(formatted_name)
  puts "Name: #{response.name}"
  puts "External ID: #{response.external_id}"
end

C#

Pour en savoir plus sur l'installation et la création d'un client Cloud Talent Solution, consultez la page Bibliothèques clientes Cloud Talent Solution.

public static object GetTenant(string projectId, string tenantId)
{
    TenantServiceClient tenantServiceClient = TenantServiceClient.Create();
    TenantName name = TenantName.FromProjectTenant(projectId, tenantId);
    GetTenantRequest request = new GetTenantRequest
    {
        TenantName = name
    };
    Tenant response = tenantServiceClient.GetTenant(request);
    Console.WriteLine($"Name: {response.Name}");
    Console.WriteLine($"External ID: {response.ExternalId}");
    return 0;
}

Répertorier les locataires

Java

Pour en savoir plus sur l'installation et la création d'un client Cloud Talent Solution, consultez la page Bibliothèques clientes Cloud Talent Solution.


import com.google.cloud.talent.v4beta1.ListTenantsRequest;
import com.google.cloud.talent.v4beta1.ProjectName;
import com.google.cloud.talent.v4beta1.Tenant;
import com.google.cloud.talent.v4beta1.TenantServiceClient;
import java.io.IOException;

public class JobSearchListTenants {

  public static void listTenants() throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "your-project-id";
    listTenants(projectId);
  }

  // List Tenants.
  public static void listTenants(String projectId) throws IOException {
    try (TenantServiceClient tenantServiceClient = TenantServiceClient.create()) {
      ProjectName parent = ProjectName.of(projectId);

      ListTenantsRequest request =
          ListTenantsRequest.newBuilder().setParent(parent.toString()).build();

      for (Tenant responseItem : tenantServiceClient.listTenants(request).iterateAll()) {
        System.out.printf("Tenant Name: %s\n", responseItem.getName());
        System.out.printf("External ID: %s\n", responseItem.getExternalId());
      }
    }
  }
}

PHP

Pour en savoir plus sur l'installation et la création d'un client Cloud Talent Solution, consultez la page Bibliothèques clientes Cloud Talent Solution.

require __DIR__ . '/vendor/autoload.php';

use Google\Cloud\Talent\V4beta1\TenantServiceClient;

/** List Tenants */
function sampleListTenants($projectId)
{

    $tenantServiceClient = new TenantServiceClient();

    // $projectId = 'Your Google Cloud Project ID';
    $formattedParent = $tenantServiceClient->projectName($projectId);

    try {
        // Iterate through all elements
        $pagedResponse = $tenantServiceClient->listTenants($formattedParent);
        foreach ($pagedResponse->iterateAllElements() as $responseItem) {
            printf('Tenant Name: %s'.PHP_EOL, $responseItem->getName());
            printf('External ID: %s'.PHP_EOL, $responseItem->getExternalId());
        }
    } finally {
        $tenantServiceClient->close();
    }

}

Ruby

Pour en savoir plus sur l'installation et la création d'un client Cloud Talent Solution, consultez la page Bibliothèques clientes Cloud Talent Solution.


# List Tenants
def sample_list_tenants project_id
  # Instantiate a client
  tenant_client = Google::Cloud::Talent::TenantService.new version: :v4beta1

  # project_id = "Your Google Cloud Project ID"
  formatted_parent = tenant_client.class.project_path(project_id)

  # Iterate over all results.
  tenant_client.list_tenants(formatted_parent).each do |element|
    puts "Tenant Name: #{element.name}"
    puts "External ID: #{element.external_id}"
  end
end

C#

Pour en savoir plus sur l'installation et la création d'un client Cloud Talent Solution, consultez la page Bibliothèques clientes Cloud Talent Solution.

public static object ListTenants(string projectId)
{
    TenantServiceClient tenantServiceClient = TenantServiceClient.Create();
    ProjectName parent = new ProjectName(projectId);
    ListTenantsRequest request = new ListTenantsRequest
    {
        ParentAsProjectName = parent
    };
    var tenants = tenantServiceClient.ListTenants(request);
    foreach (var tenant in tenants)
    {
        Console.WriteLine($"Tenant Name: {tenant.Name}");
        Console.WriteLine($"External ID: {tenant.ExternalId}");
    }
    return 0;
}

Supprimer un locataire

Java

Pour en savoir plus sur l'installation et la création d'un client Cloud Talent Solution, consultez la page Bibliothèques clientes Cloud Talent Solution.


import com.google.cloud.talent.v4beta1.DeleteTenantRequest;
import com.google.cloud.talent.v4beta1.TenantName;
import com.google.cloud.talent.v4beta1.TenantServiceClient;
import java.io.IOException;

public class JobSearchDeleteTenant {

  public static void deleteTenant() throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "your-project-id";
    String tenantId = "your-tenant-id";
    deleteTenant(projectId, tenantId);
  }

  // Delete Tenant.
  public static void deleteTenant(String projectId, String tenantId) throws IOException {
    try (TenantServiceClient tenantServiceClient = TenantServiceClient.create()) {
      TenantName name = TenantName.of(projectId, tenantId);

      DeleteTenantRequest request =
          DeleteTenantRequest.newBuilder().setName(name.toString()).build();

      tenantServiceClient.deleteTenant(request);
      System.out.println("Deleted Tenant.");
    }
  }
}

PHP

Pour en savoir plus sur l'installation et la création d'un client Cloud Talent Solution, consultez la page Bibliothèques clientes Cloud Talent Solution.

require __DIR__ . '/vendor/autoload.php';

use Google\Cloud\Talent\V4beta1\TenantServiceClient;

/** Delete Tenant */
function sampleDeleteTenant($projectId, $tenantId)
{

    $tenantServiceClient = new TenantServiceClient();

    // $projectId = 'Your Google Cloud Project ID';
    // $tenantId = 'Your Tenant ID)';
    $formattedName = $tenantServiceClient->tenantName($projectId, $tenantId);

    try {
        $tenantServiceClient->deleteTenant($formattedName);
        printf('Deleted Tenant.'.PHP_EOL);
    } finally {
        $tenantServiceClient->close();
    }

}

Ruby

Pour en savoir plus sur l'installation et la création d'un client Cloud Talent Solution, consultez la page Bibliothèques clientes Cloud Talent Solution.


# Delete Tenant
def sample_delete_tenant project_id, tenant_id
  # Instantiate a client
  tenant_client = Google::Cloud::Talent::TenantService.new version: :v4beta1

  # project_id = "Your Google Cloud Project ID"
  # tenant_id = "Your Tenant ID)"
  formatted_name = tenant_client.class.tenant_path(project_id, tenant_id)

  tenant_client.delete_tenant(formatted_name)

  puts "Deleted Tenant."
end

C#

Pour en savoir plus sur l'installation et la création d'un client Cloud Talent Solution, consultez la page Bibliothèques clientes Cloud Talent Solution.

public static object DeleteTenant(string projectId, string tenantId)
{
    TenantServiceClient tenantServiceClient = TenantServiceClient.Create();
    TenantName tenantName = TenantName.FromProjectTenant(projectId, tenantId);
    DeleteTenantRequest request = new DeleteTenantRequest
    {
        TenantName = tenantName
    };
    tenantServiceClient.DeleteTenant(request);
    Console.WriteLine($"Deleted Tenant.");
    return 0;
}