GetLegalActionDefNames

Descrizione

Restituisce un elenco di azioni accessibili per un dato record (oggetto Entity).

Questo metodo è simile al metodo GetActionDefNames dell'oggetto EntityDef; tuttavia, l'elenco restituito da questo metodo contiene solo le azioni che possono essere eseguite sull'oggetto Entity nel relativo stato corrente. È possibile utilizzare questo metodo prima di richiamare il metodo EditEntity dell'oggetto Session per determinare le azioni valide che un utente può eseguire sul record.

Oltre ad elencare solo le azioni consentite basate sullo stato, l'elenco restituito è limitato anche alle azioni che un utente può eseguire. Tuttavia, questa verifica dei permessi si basa solo sui permessi di accesso del gruppo. Se invece l'azione o qualsiasi azione di base dispone di un hook Access_Control, tale hook non viene eseguito per determinare se l'utente dispone dei permessi per eseguire l'azione. Quindi, l'utente può ottenere un messaggio di errore "permission denied" se viene eseguita una di queste azioni.

Se questo metodo viene richiamato dall'interno di un hook, l'utente disporrà sempre dei permessi per eseguire qualsiasi azione valida per lo stato corrente del record.

Sintassi

VBScript

entity.GetLegalActionDefNames 

Perl

$entity->GetLegalActionDefNames(); 
Identificativo
Descrizione
entity
Un oggetto Entity che rappresenta un record di dati dell'utente. All'interno di un hook, se si omette questa parte della sintassi, viene utilizzato l'oggetto Entity corrispondente al record di dati corrente (solo VBScript).
Valore di ritorno
Per Visual Basic, viene restituito un valore Variant che contiene un array di stringhe. Ogni stringa contiene il nome di un'azione valida. Se non è possibile eseguire alcuna azione sull'oggetto Entity, il valore di ritorno è un valore Variant vuoto.

In Perl, un riferimento ad un array di stringhe.

Esempi

VBScript

set sessionObj = GetSession

entityDefName = GetEntityDefName
set entityDefObj = sessionObj.GetEntityDef(entityDefName)

' Search for a legal action with which to modify the record 
actionDefList = GetLegalActionDefNames 
For Each actionDef in actionDefList 
   actionDefType = entityDefObj.GetActionDefType(actionDef)
   if actionDefType = AD_MODIFY Then 
      sessionObj.EditEntity entity, actionDef 
      Exit For 
   End If 
Next 

Perl

$sessionobj = $entity->GetSession();



$entitydefname = $entity->GetEntityDefName();



$entitydefobj = $sessionobj->GetEntityDef($entitydefname);



# Search for a legal action with which to modify the record 

$actiondeflist = $entity->GetLegalActionDefNames();



foreach $actionname(@$actiondeflist)
   {
 $actiondeftype = $entitydefobj->GetActionDefType($actionname);

 if ($actiondeftype eq $CQPerlExt::CQ_MODIFY)

  {

  $sessionobj->EditEntity($entity,$actionname);

  }

 } 

Feedback