| 4D v20.1Get locked records info | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 
 | 
    4D v20.1
 Get locked records info 
         | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Get locked records info ( aTabela ) -> Resultado | ||||||||
| Parâmetro | Tipo | Descrição | ||||||
| aTabela | Tabela |   | Tabela da qual obter os registros bloqueados | |||||
| Resultado | Objeto |   | Descrição dos registros bloqueados (se houver) | |||||
O comando Get locked records info devolve um objeto que contém diferente informação sobre os registros bloqueados atualmente em aTabela.
Nota: o comando funciona só com 4D e 4D Server. Devolve um objeto não válido quando for chamado desde um 4D remoto. Entretanto, pode ser chamado neste contexto se a opção "Executar em servidor" estiver ativada para o método de chamada. Nesse caso, o objeto devolvido conterá informação sobre o servidor. Quando chamar desde um componente, sempre se aplica ao banco de dados local.
O objeto devolvido contém uma propriedade "registros", que é um array de objetos:
{
    "records": [
        objeto descrição,
        (…)
    ]
}Cada elemento da coleção "description object" identifica um registro bloqueado na tabela especificada. Contém diferentes propiedades dependendo da origem do bloqueio (processo 4D ou REST API).
| Propriedade | Tipo | Descrição | 
| contextID | UUID (Cadeia) | UUID do contexto da base responsável do bloqueio | 
| contextAttributes | Objeto | Objeto que contém a mesma informação que o comando LOCKED BY aplicado ao registro, a diferença é que Get locked records info devolve o nome do usuário definido no sistema e não o do usuário 4D, assim como informação adicional (ver mais a frente). | 
| recordNumber | Inteiro longo | Número de registro do registro bloqueado | 
O objeto contextAttributes tem as propriedades abaixo:
| Propriedade | Tipo | Descrição | 
| task_id | Número | Número de referência do processo | 
| user_name | Cadeia | Nome do usuário definido no sistema operativo | 
| user4d_alias | String | Apelido/alias definido com SET USER ALIAS, senão o nome do usuário no diretório de banco de dados 4D | 
| user4d_id | Número | Número do usuário 4D(*) | 
| host_name | Cadeia | Nome da máquina local | 
| task_name | Cadeia | Nome do processo | 
| client_version | Número | Versão da aplicação cliente | 
| Unicamente quando o comando se executa em 4D Server e se o bloqueio do registro provém de um 4D remoto: | ||
| is_remote_context | Boolean | Indica se uma origem do bloqueio é um 4D remoto (sempre true já que caso contrário não está presente) | 
| client_uid | UUID (Cadeia) | UUID do 4D remoto na origem do bloqueio | 
(*) Só retornado em bancos de dados binários. Pode obter o nome de usuário 4D a partir do valor de user4d_id usando o código abaixo
 GET USER LIST($arrNames;$arrIDs)
 $User4DName:=Find in array($arrIDs;user4d_id)
Se o registro foi bloqueado pela petição $lock REST (a nivel de sessão):
| Propriedade | Tipo | Descrição | 
| host | String | URL com a qual a entidade foi bloqueada, por exemplo. "127.0.0.1:8044" | 
| IPAddr | String | Endereço IP utilizado na URL com a qual a entidade foi boqueada, por exemplo. "127.0.0.1" | 
| recordNumber | Inteiro | Número de registro do registro bloqueado | 
| userAgent | String | Agente de usuário do locker, por exemplo "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36" | 
Execute o seguinte código:
 $vOlocked :=Get locked records info([Table])Se dois registros estão bloqueados na tabela [Table], o seguinte objeto se devolve em $vOlocked:
{
    "records": [
        {
            "contextID": "A9BB84C0E57349E089FA44E04C0F2F25",
            "contextAttributes": {
                "task_id": 8, (*)
                "user_name": "roland", (*)
                "user4d_id": 1,
                "host_name": "iMac de roland",
                "task_name": "P_RandomLock",
                "client_version": -1342106592
            },
            "recordNumber": 1
        },
        {
            "contextID": "8916338D1B8A4D86B857D92F593CCAC3",
            "contextAttributes": {
                "task_id": 9,
                "user_name": "roland",
                "user4d_id": 1,
                "host_name": "iMac de roland",
                "task_name": "P_RandomLock",
                "client_version": -1342106592
            },
            "recordNumber": 2
        }
    ]
}Se o código é executado em um 4D Server e o bloqueio é causado por uma  máquina cliente remota, o seguinte objeto é devolvido em $vOlocked:
{
    "records": [
        {
            "contextID": "B0EC087DC2FA704496C0EA15DC011D1C",
            "contextAttributes": {
                "task_id": 2,
                "user_name": "achim",
                "user4d_id": 1,
                "host_name": "achim-pcwin",
                "task_name": "P_RandomLock",
                "is_remote_context": true,
                "client_uid": "0696E66F6CD731468E6XXX581A87554A",
                "client_version": -268364752
            },
            "recordNumber": 1
        }
    ]
}
	Produto: 4D
	Tema: Bloqueio de Registros
	Número 
        1316
        
        
        
	
	Criado por: 4D v14 R3
	Modificado: 4D v19 R4
	
	
	
	
	
	Manual de linguagem 4D ( 4D v20)
	
	Manual de linguagem 4D ( 4D v20.1)
	
	
 Adicionar um comentário
Adicionar um comentário