Utiliser les vues d’activité
Associez des sources gouvernées et utilisez des vues enregistrées fixes dans Processes.
Utiliser les vues d’activité
Les vues d’activité regroupent l’activité autorisée de Processes à partir de références et d’associations explicites. Une référence est un identifiant opaque limité au tenant. Elle ne crée aucun enregistrement client, dossier, demande ni résultat métier.
Utilisez ce guide après l’enregistrement des faits de cycle de vie par le propriétaire de la source. Activity views affiche ces faits, y compris les attentes et les Decision Requests. Lineage Explorer reste la surface d’enquête sur l’exécution.
Accès et propriété
workflow:read ouvre les routes Processes. Le propriétaire de chaque source
autorise toute source contributrice avant le retour de sa référence, de son
compte, de son heure, de sa relation ou de son élément de chronologie.
activity_reference:manage gère les associations et activity_view:manage
gère les définitions de vues enregistrées. Un appel d’association résout aussi
l’accès en lecture à la source qu’il nomme : une identité disposant de
activity_reference:manage sans accès en lecture à cette source reçoit
FORBIDDEN.
| Opération | Procédure générée du plan de contrôle |
|---|---|
| Associer une source | activityReferences.admit |
| Corriger une association | activityReferences.correct |
| Lire les associations effectives | activityReferences.listEffective |
| Créer, modifier, archiver ou récupérer une vue enregistrée | activityViews.create, activityViews.update, activityViews.archive, activityViews.unarchive |
| Interroger les groupes, l’activité ou le travail associé | activity.listGroups, activity.getGroup, activity.listActivity, activity.listRelatedGroups |
Le chemin de requête lit la projection de l’API principale. Il n’appelle pas l’API d’un propriétaire pour chaque ligne. Le propriétaire de la source reste responsable de ses faits de cycle de vie, de son contenu et de son accès détaillé.
Associer deux demandes à une référence client
Utilisez des références explicites fournies par le propriétaire de la source ou
l’intégration. Ne déduisez jamais une référence du texte d’une invite, du texte
affiché d’une source ou du contenu d’un message. Le premier corps associe une
demande à une référence client et à une référence de demande. Enregistrez-le
sous request-104-association.json.
{
"references": [
{ "namespace": "customer", "key": "external_id", "value": "CMB-42" },
{ "namespace": "request", "key": "external_id", "value": "REQUEST-104" }
],
"source": {
"sourceType": "input_wait",
"sourceId": "11111111-1111-4111-8111-111111111111",
"sourceRevision": "wait-104-v1"
}
}
activityReferences.listEffective porte le localisateur de source seul et
retourne les associations qui contribuent actuellement à la projection.
Enregistrez-le sous request-104-source.json.
{
"source": {
"sourceType": "input_wait",
"sourceId": "11111111-1111-4111-8111-111111111111",
"sourceRevision": "wait-104-v1"
}
}
kla api activityReferences admit --input @request-104-association.json
kla api activityReferences listEffective --input @request-104-source.json
Utilisez activityReferences.correct lorsque l’association effective change.
La correction nomme l’association qu’elle remplace. L’ancienne association reste
dans l’historique et cesse de contribuer à la projection effective. Enregistrez
la correction sous request-104-correction.json.
{
"reference": { "namespace": "request", "key": "external_id", "value": "REQUEST-104-CORRECTED" },
"source": {
"sourceType": "input_wait",
"sourceId": "11111111-1111-4111-8111-111111111111",
"sourceRevision": "wait-104-v2"
},
"supersedesAssociationId": "22222222-2222-4222-8222-222222222222"
}
kla api activityReferences correct --input @request-104-correction.json
Les sources tombstonées restent supprimées après une relecture. Une correction
ou un tombstone peut rendre la couverture partial ou unavailable. Il ne peut
pas restaurer du contenu supprimé.
Créer une vue enregistrée fixe
Les vues enregistrées acceptent une configuration fixe. Les filtres autorisés sont l’égalité de référence, le type de source, l’état enregistré et une plage de dates inclusive. L’API, la CLI et l’UI rejettent les champs de formule, les arbres d’expression arbitraires, les opérateurs personnalisés et un champ de résultat métier.
Une vue de portée travail liste les demandes individuelles. Enregistrez cette
définition sous customer-request-history.json.
{
"name": "Customer request history",
"grouping": { "namespace": "request", "key": "external_id" },
"labels": { "grouping": "Request" },
"scope": "work",
"orderedColumns": ["reference", "pending_work", "latest_activity", "waiting_since"],
"filters": {
"referenceEquals": [],
"sourceKinds": ["input_wait", "input_event", "execution"],
"statuses": ["waiting", "completed"]
},
"sort": { "field": "latest_activity", "direction": "desc" }
}
Le travail associé relève d’une vue de portée sujet qui porte un regroupement
secondaire. activity.listRelatedGroups rejette toute autre configuration avec
secondary_grouping_required. Enregistrez cette définition sous
customer-history-view.json.
{
"name": "Customer history",
"grouping": { "namespace": "customer", "key": "external_id" },
"labels": { "grouping": "Customer", "secondaryGrouping": "Request" },
"scope": "subject",
"secondaryGrouping": { "namespace": "request", "key": "external_id" },
"orderedColumns": ["reference", "pending_work", "latest_activity", "secondary_reference"],
"filters": {
"referenceEquals": [],
"sourceKinds": ["input_wait", "input_event", "execution"],
"statuses": ["waiting", "completed"]
},
"sort": { "field": "latest_activity", "direction": "desc" }
}
Une modification remplace toute la configuration enregistrée. Le corps porte
chaque champ de configuration avec l’id de la vue et son expectedRevision
actuel. Cette modification ajoute la colonne d’échéance. Enregistrez-la sous
customer-request-history-update.json.
{
"id": "33333333-3333-4333-8333-333333333333",
"expectedRevision": 1,
"name": "Customer request history",
"grouping": { "namespace": "request", "key": "external_id" },
"labels": { "grouping": "Request" },
"scope": "work",
"orderedColumns": ["reference", "pending_work", "latest_activity", "waiting_since", "deadline"],
"filters": {
"referenceEquals": [],
"sourceKinds": ["input_wait", "input_event", "execution"],
"statuses": ["waiting", "completed"]
},
"sort": { "field": "latest_activity", "direction": "desc" }
}
L’archivage conserve la définition et retire la vue de la liste. Il exige l’id
de la vue et la révision renvoyée par la modification. Enregistrez-le sous
customer-request-history-archive.json.
{
"id": "33333333-3333-4333-8333-333333333333",
"expectedRevision": 2
}
La récupération restaure une vue archivée et exige la révision renvoyée par
l’archivage. Enregistrez-la sous customer-request-history-unarchive.json.
{
"id": "33333333-3333-4333-8333-333333333333",
"expectedRevision": 3
}
kla api activityViews create --input @customer-request-history.json
kla api activityViews create --input @customer-history-view.json
kla api activityViews update --input @customer-request-history-update.json
kla api activityViews archive --input @customer-request-history-archive.json
kla api activityViews unarchive --input @customer-request-history-unarchive.json
Chaque modification d’une vue enregistrée renvoie la révision suivante. Rechargez la définition enregistrée avant de relancer une opération en conflit.
Interroger le travail et l’historique client
Chaque requête nomme une vue enregistrée. Un filtre demandé restreint le filtre
enregistré, et un champ de tri demandé doit figurer dans les orderedColumns
enregistrées. Chaque réponse réussie fournit asOf, coverage et nextCursor.
totalCount est limité à l’instantané autorisé et peut être null lorsque la
requête atteint sa limite d’agrégation.
activity.listGroups liste les groupes de la vue de portée travail.
Enregistrez la requête sous waiting-requests-query.json.
{
"viewId": "33333333-3333-4333-8333-333333333333",
"filters": {
"referenceEquals": [],
"sourceKinds": ["input_wait"],
"statuses": ["waiting"]
},
"limit": 25,
"sort": { "field": "latest_activity", "direction": "desc" }
}
activity.getGroup lit un seul groupe. Il exige referenceId et n’accepte ni
limit ni sort. Enregistrez la requête sous request-104-group.json.
{
"viewId": "33333333-3333-4333-8333-333333333333",
"referenceId": "44444444-4444-4444-8444-444444444444"
}
activity.listActivity lit la chronologie d’une référence et la pagine avec le
curseur. Enregistrez la requête sous request-104-timeline.json.
{
"viewId": "33333333-3333-4333-8333-333333333333",
"referenceId": "44444444-4444-4444-8444-444444444444",
"limit": 25,
"sort": { "field": "latest_activity", "direction": "desc" }
}
activity.listRelatedGroups nomme la vue de portée sujet et la référence
client, puis retourne les groupes de demandes qu’elle contient. Enregistrez la
requête sous customer-42-history.json.
{
"viewId": "55555555-5555-4555-8555-555555555555",
"referenceId": "66666666-6666-4666-8666-666666666666",
"limit": 25,
"sort": { "field": "latest_activity", "direction": "desc" }
}
kla api activity listGroups --input @waiting-requests-query.json
kla api activity getGroup --input @request-104-group.json
kla api activity listActivity --input @request-104-timeline.json
kla api activity listRelatedGroups --input @customer-42-history.json
Le curseur retourné lie la forme de la requête et l’instantané de projection. Utilisez-le uniquement avec la même vue, référence, filtres et le même tri. Sélectionnez Actualiser pour démarrer un nouvel instantané autorisé.
Utiliser le client TypeScript typé
Le client TypeScript du plan de contrôle utilise les mêmes procédures tRPC que la CLI. Il transmet le jeton d’accès et l’en-tête de tenant par son transport configuré. Les SDK Node et Python de gouvernance ne publient pas de méthodes Activity views.
import type { AppRouter } from '@kla/api';
import { createControlPlaneClient } from '@kla/api-client';
const client = createControlPlaneClient<AppRouter>({
baseUrl: process.env.KLA_API_URL!,
tenantId: process.env.KLA_TENANT_ID!,
token: process.env.KLA_ACCESS_TOKEN!,
});
const view = await client.activityViews.create.mutate(configuration);
const groups = await client.activity.listGroups.query({ viewId: view.id, limit: 25 });
Le client reçoit le même contrat de configuration typé que l’UI. L’autorisation des sources est toujours appliquée sur le serveur pour chaque requête.
Examiner l’activité courante
Ouvrez Processes et sélectionnez une Activity view. La liste des groupes affiche des références de travail distinctes. Ouvrez une référence de travail pour sa chronologie. Ouvrez une référence de sujet pour le travail associé. Utilisez les liens de propriétaire pour poursuivre l’enquête dans Lineage Explorer ou Decision Desk lorsque l’identité courante peut lire cette source.
La couverture et la fraîcheur décrivent l’instantané de projection retourné. Un résultat partiel peut omettre de l’activité de source. Une modification de permission retire une source à la prochaine lecture autorisée.
