TMACUL

SPEL API methods / métodos - Brazilian Portuguese

Blog Post created by TMACUL Champion on Oct 22, 2015

Este documento foi adaptado do original em inglês localizado em SPEL API methods escrito por Gutis

 

 

  • Os métodos de API do SPEL são definidos no objeto, as definições podem ser encontradas no arquivo api.maj.
  • Para chamar os métodos definidos no objeto individual usamos a seguinte definição

 

 

send_wait(0,top_object(), "call_attr", "<object>", "<object_function>", <object_function_parameters>);

 

 

update_object_super

__________________________________________________________________________________________________________________________________________________________

Este método permite atualizar diversos atributos para o objeto.

 

Definição:

update_object_super( uuid, string, int, ... ) ;


uuid     -     user id

string  - persistent_id  do objeto que irá atualizar/update

int        - normalmente 0


... - campo-valor Forme pares para atualizar os atributos: "atributo1", "valor1","atributo2", "valor2"

 

Exemplo:

  uuid who;
  send_wait(0,top_object(), "call_attr", "cnt", "current_user_id");
  who=msg[0];
  send_wait(0, top_object(), "call_attr", "api", "update_object_super", who, persistent_id, 0, "description", description, "time_spent", time_spent);






 

 

 

insert_object

__________________________________________________________________________________________________________________________________________________________

Este método permite criar um objeto e define os atributos para o objeto.


Definição:

insert_object( uuid, string, object|nil, int, ... ) ;


uuid            - user id

string          - factory name

object|nil     - NULL (do not know what kind of object should be passed and for what purpose it is used)

int              - usually 0


... - campo-valor Forme pares para atualizar os atributos: "atributo1", "valor1","atributo2", "valor2"


Exemplo:

  uuid who;
  object newobject;
  send_wait(0,top_object(), "call_attr", "cnt", "current_user_id");
  who=msg[0];
  send_wait(0, top_object(), "call_attr", "api", "insert_object", who, "zcustomobject1", NULL, 0, "description", description, "time_spent", time_spent, "alg", persistent_id, "request", call_req_id, "contact", analyst);
  if (!msg_error()) {
      newobject = msg[0];
      logf(SIGNIFICANT, "new object id %s", newobject.id); //log new object id
    }






 

 

delete_wc

__________________________________________________________________________________________________________________________________________________________

Escrito por cdtj

 

Este método permite apagar/deletar objetos de acordo com o critério.


Definição:

delete_wc(string, string, object|nil ) ;


string        - factory

string        - critério de busca

object|nil   - NULL

 

Exemplo:

uuid cnt_id;
cnt_id = "<SOME CONTACT UUID HERE>";
send_wait(0, top_object(), "call_attr", "api", "delete_wc", "grpmem", format("member=U'%s'", (uuid)cnt_id), NULL); // remove o contato de todos os grupos;






 

 

get_access_for_contact

__________________________________________________________________________________________________________________________________________________________

Este método permite buscar a informação do tipo de acesso (Access Type) do contato.


Definição:

get_access_for_contact( string ) ;


string - contact handle

 

Exemplo:

//gets licensing information for curent user
uuid who;
  send_wait(0,top_object(), "call_attr", "cnt", "current_user_id");
  who=msg[0];

  send_wait(0, top_object(), "call_attr", "api", "get_access_for_contact", (string)who );
  if (msg_error()) {
      logf(ERROR, "get_access_for_contact failed %s",msg[0]);
    }
    else
    {
    object zaccess;
    zaccess = msg[0];
    logf(SIGNIFICANT, "access: %s",zaccess.licensed);
    }






get_func_access

__________________________________________________________________________________________________________________________________________________________

Este método permite acessar o código funcional que é definido pelo objeto.


Definição:

get_func_access(string);


string - factory

 

Exemplo:

send_wait(0, top_object(), "call_attr", "api", "get_func_access", "chg" );
  if (msg_error()) {
      logf(ERROR, "get_func_access failed %s",msg[0]);
    }
    else
    {
    logf(SIGNIFICANT, "chg: %s %s %s",msg[0],msg[1], msg[2]); //msg[0] - always int 1, msg[1] - factory name e.g. cr, msg[2] -functional access code e.g change_mgr
    }






 

 

get_system_users

__________________________________________________________________________________________________________________________________________________________

Este método irá acessar os usuários com privilégios do CA SDM e seus ID's


Definição:

get_system_users ( uuid )


uuid - contact handle

 

Exemplo:

uuid who;
  send_wait(0,top_object(), "call_attr", "cnt", "current_user_id");
  who=msg[0];
  send_wait(0, top_object(), "call_attr", "api", "get_system_users", who );
  if (msg_error()) {
      logf(ERROR, "get_failed %s",msg[0]);
    }
    else
    {
    int i;
    for (i=0;i<msg_length();i++) {
      logf(SIGNIFICANT, "msg[%d]: '%s'", i, msg[i]);
      }
    }
//output
/* msg[0]: 'anonymous'
  msg[1]: '8F273A972A45E44C9FF0079259E2A60E'
  msg[2]: 'ServiceDesk'
  msg[3]: '70735EDD6CF3264D9B6976CDC095015F' */







 

 

get_attr_list_for_object

__________________________________________________________________________________________________________________________________________________________

Este método irá buscar os atributos do objeto pelo nome


Definição:

get_attr_list_for_object( uuid, string ) ;


uuid      - contact handle

string    - nome do object (exemplos: cr,nr,wf, etc)

 

 

Exemplo:

  uuid who;
  send_wait(0,top_object(), "call_attr", "cnt", "current_user_id");
  who=msg[0];
  send_wait(0, top_object(), "call_attr", "api", "get_attr_list_for_object", who, "cr");
  if (msg_error()) {
    logf(ERROR, "checkin failed %s",msg[0]);
    }else
    {
    int i;
      for (i=0;i<msg_length();i++) {
      logf(SIGNIFICANT, "msg[%d]: '%s'", i, msg[i]);
      }
    }






 

 

get_attr_information

__________________________________________________________________________________________________________________________________________________________

Este método irá acessar a informação do atributo.


Definição:

get_attr_information( uuid, string, string ) ;


uuid      - contact handle

string    - nome do objeto  (cr,nr,wf, etc.)

string    - nome do atributo (campo)

 

 

Exemplo:

  uuid who;
  send_wait(0,top_object(), "call_attr", "cnt", "current_user_id");
  who=msg[0];
  send_wait(0, top_object(), "call_attr", "api", "get_attr_information", who, "cr", "status");
  if (msg_error()) {
    logf(ERROR, "checkin failed %s",msg[0]);
    }else
    {
    int i;
      for (i=0;i<msg_length();i++) {
      logf(SIGNIFICANT, "msg[%d]: '%s'", i, msg[i]);
      }
    }

//DataType - msg[0]: '2005'
//Size - msg[1]: '1'
//Required - msg[2]: '0'
//Factory msg[3]: 'crs'

//DataTypes:
//Integer 2001
//String 2002
//Duration 2003
//Date 2004
//SREL 2005
//float or double 2006
//List (QREL/BREL) 2007
//Lrel (many-to-many) 2008
//UUID 2009






 

 

get_object_values

__________________________________________________________________________________________________________________________________________________________

Este método permite criar um objeto e definir diversos atributos.


Definição:

get_object_values(uuid, string, int, ... ) ;


uuid      - user id

string    - persistent_id do object

int        - usually 0


... - attributes to get values from "atribute1", "atribute2",....

 

Exemplo:

uuid who;
send_wait(0,top_object(), "call_attr", "cnt", "current_user_id");
who=msg[0];
send_wait(0, top_object(), "call_attr", "api", "get_object_values", who, "cr:400865", 0, "summary");
if (msg_error()) {
  logf(ERROR, "get_failed %s",msg[0]);
}
else
{
int i;
for (i=0;i<msg_length();i++) {
  logf(SIGNIFICANT, "msg[%d]: '%s'", i, msg[i]);
  }
}
//output: msg[0]: 'summary' msg[1]: 'Test incident'






 

 

generic_activity_log

__________________________________________________________________________________________________________________________________________________________

Este método permite criar um log de atividade (activity log) para os objetos cr, chg e iss


Definição:

generic_activity_log ( uuid, string, string, string, int, int ) ;


uuid      - user id

string    - persistent_id do objeto

string    - descrição

string    - activity log type

int        - Tempo gasto na atividade - em segundos

int         - visibilidade do log (0 - publico, 1 - interno)

 

Exemplo:

uuid who;
send_wait(0,top_object(), "call_attr", "cnt", "current_user_id");
who=msg[0];
send_wait(0, top_object(), "call_attr", "api", "generic_activity_log", who, "cr:401096", "test description", "LOG", 0, 0);
if (msg_error()) {
  logf(ERROR,"Error %s",msg[0]);
}






 

notify_contacts

__________________________________________________________________________________________________________________________________________________________

O método irá enviar um email e criar uma entrada no log de atividade.

 


Definição:

generic_activity_log ( uuid, string, string, string, int, int ) ;

 

uuid      - user id

string    - persistent_id of the object

string    - assunto/subject

string    - corpo da mensagem/body

int          - notification urgency

int          - visibility of the log (0 - public, 1 - internal)

 

Exemplo:

uuid who;
send_wait(0,top_object(), "call_attr", "cnt", "current_user_id");
who=msg[0];
send_wait(0, top_object(), "call_attr", "api", "notify_contacts", who, "cr:401096", "test subject", "test body", 1, 0, "cnt:20AB02D29AA8414FB3BE2F3CEB2E9FEC");
if (msg_error()) {
  printf("Error %s",msg[0]);
}






add_request

__________________________________________________________________________________________________________________________________________________________

O método permite criar um novo ticket utilizando um template. Ele também permite popular as propriedades se elas existirem para a categoria.


Definição:

add_request( uuid, string, string, int, ... ) ;


uuid    -  user id

string  - persistent_id do template (opcional)

string  - created_via persistent_id definido na interdade de criação

int        - numero de propriedades que irá passar para o método (0 - sem entrada de valores)


... - if number of properties values >0, values of the properties shall be passed first and then name-value pairs for the attributes to update "atribute1", "value1","atribute2", "value2"

 

Exemplo:

1. Sem propriedades

uuid who;
send_wait(0,top_object(), "call_attr", "cnt", "current_user_id");
who=msg[0];
send_wait(0, top_object(), "call_attr", "api", "add_request", who, "3155", "intfc:3553", 0, "customer", who, "category", "pcat:5109");
if (msg_error()) {
  logf(ERROR, "get_failed %s",msg[0]);
}






2. Com propriedades e sem template

uuid who;
send_wait(0,top_object(), "call_attr", "cnt", "current_user_id");
who=msg[0];
send_wait(0, top_object(), "call_attr", "api", "add_request", who, "", "intfc:3553", 1, "test", "customer", who, "category", "pcat:5109");
if (msg_error()) {
  logf(ERROR, "get_failed %s",msg[0]);
}






 

 

add_change_order

__________________________________________________________________________________________________________________________________________________________

Este método permite criar uma nova requisição de mudança (change Order) utilizando um template, se existirem propriedades definidas para categoria elas podem ser populadas.



Definição:

add_change_order( uuid, string, string, int, ... ) ;


uuid      - user id

string    - persistent_id of the change template (optional)

string    - created_via persistent_id defines creation interface.

int          - number of properties values that will be passed to method (0 - no properties values)

 

... - if number of properties values >0, values of the properties shall be passed first and then name-value pairs for the attributes to update "atribute1", "value1","atribute2", "value2"

 

Exemplo:

1. Sem propriedades

uuid who;
send_wait(0,top_object(), "call_attr", "cnt", "current_user_id");
who=msg[0];
send_wait(0, top_object(), "call_attr", "api", "add_change_order", who, "3274", "intfc:3553", 0, "requestor", who, "category","chgcat:6100");
if (msg_error()) {
  logf(ERROR, "get_failed %s",msg[0]);
}






2. com propriedades e sem template

uuid who;
send_wait(0,top_object(), "call_attr", "cnt", "current_user_id");
who=msg[0];
send_wait(0, top_object(), "call_attr", "api", "add_change_order", who, "", "intfc:3553", 1, "change property", "requestor", who, "category","chgcat:6100");
if (msg_error()) {
  logf(ERROR, "get_failed %s",msg[0]);
}






 

 

add_issue

__________________________________________________________________________________________________________________________________________________________

Este método cria um nova ocorrência (issue) utilizando um template. Ele também permite popular as propriedades se elas existirem para a categoria.


Definição:

add_issue( uuid, string, string, int, ... ) ;


uuid      - user id

string    - persistent_id of the issue template (optional)

string    - created_via persistent_id defines creation interface.

int        - number of properties values that will be passed to method (0 - no properties values)


... - if number of properties values >0, values of the properties shall be passed first and then name-value pairs for the attributes to update "atribute1", "value1","atribute2", "value2"

 

Exemplo:

1. Sem propriedades

uuid who;
send_wait(0,top_object(), "call_attr", "cnt", "current_user_id");
who=msg[0];
send_wait(0, top_object(), "call_attr", "api", "add_issue", who, "2852", "intfc:3553", 0, "requestor", who);
if (msg_error()) {
  logf(ERROR, "get_failed %s",msg[0]);
}






2. Com propriedades

uuid who;
send_wait(0,top_object(), "call_attr", "cnt", "current_user_id");
who=msg[0];
send_wait(0, top_object(), "call_attr", "api", "add_issue", who, "2852", "intfc:3553", 2, "prp1", "prp2", "requestor", who, "category","isscat:9101");
if (msg_error()) {
  logf(ERROR, "get_failed %s",msg[0]);
}






 

 

get_valid_tasks_wc

__________________________________________________________________________________________________________________________________________________________

Este método permite buscar tarefas do workflow válidas e seus status..

 

Definição:

get_valid_tasks_wc( string );

 

string - persistent_id of the workflow task

 

Exemplo:

 

 

  1. uuid who;   
  2. send_wait(0,top_object(), "call_attr", "cnt", "current_user_id");   
  3. who=msg[0];  
  4. send_wait(0, top_object(), "call_attr", "api", "get_valid_tasks_wc", "wf:400017");   
  5. if (msg_error()) {   
  6. printf("Error %s",msg[0]);   
  7. }   
  8. else   
  9.   { 
  10.   int i;   
  11.   for (i=0;i<msg_length();i++) {   
  12.    printf("msg[%d]: '%s'", i, msg[i]);   
  13.    }   
  14.   }  
  15. //output: 
  16. //msg[0]: '(code = 'APP' OR code = 'PEND' OR code = 'REJ' OR code = 'WAIT') AND is_internal = 0' 
  17. //msg[1]: 'tskstat' 

 

get_workflos

__________________________________________________________________________________________________________________________________________________________

Este método permite buscar o núneri de tarefaz anexadas ao objeto.

 

get_workflow

 

Gets number of tasks attached to object


Definition:

get_workflow( string );

string - persistent_id of the object chg,iss. No support for cr workflows.

 

working example:

 

 

  1. uuid who;   
  2. send_wait(0,top_object(), "call_attr", "cnt", "current_user_id");   
  3. who=msg[0];  
  4. send_wait(0, top_object(), "call_attr", "api", "get_workflow", "chg:400262");   
  5. if (msg_error()) {   
  6. printf("Error %s",msg[0]);   
  7. }   
  8. else   
  9.   { 
  10.   int i;   
  11.   for (i=0;i<msg_length();i++) {   
  12.    printf("msg[%d]: '%s'", i, msg[i]);   
  13.    }   
  14.   }  
  15. //output: 
  16. //msg[0]: ''msg[1]: '7' 

 

 

 

 

Autores

Giedrius

Timur

 

Adaptado para o português por Tiago Macul

Outcomes