Saltar para o conteúdo principal
Versão: Próximo

Get locked records info

Get locked records info ( aTabela ) -> Resultado

ParâmetroTipoDescrição
aTabelaTabela🡒Tabela da qual obter os registros bloqueados
ResultadoObjeto🡐Descrição dos registros bloqueados (se houver)

Descrição

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).

  • Se o registro foi bloqueado por um processo 4D:
PropriedadeTipoDescrição
contextIDUUID (Cadeia)UUID do contexto da base responsável do bloqueio
contextAttributesObjetoObjeto 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).
recordNumberInteiro longoNúmero de registro do registro bloqueado

O objeto contextAttributes tem as propriedades abaixo:

PropriedadeTipoDescrição
task_idNúmeroNúmero de referência do processo
user_nameCadeiaNome do usuário definido no sistema operativo
user4d_aliasStringApelido/alias definido com SET USER ALIAS, senão o nome do usuário no diretório de banco de dados 4D
user4d_idNúmeroNúmero do usuário 4D(*)
host_nameCadeiaNome da máquina local
task_nameCadeiaNome do processo
client_versionNúmeroVersã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_contextBooleanIndica se uma origem do bloqueio é um 4D remoto (sempre true já que caso contrário não está presente)
client_uidUUID (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):

PropriedadeTipoDescrição
hostStringURL com a qual a entidade foi bloqueada, por exemplo. "127.0.0.1:8044"
IPAddrStringEndereço IP utilizado na URL com a qual a entidade foi boqueada, por exemplo. "127.0.0.1"
recordNumberInteiroNúmero de registro do registro bloqueado
userAgentStringAgente 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"

Exemplo

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        }    ]}

Ver também

Locked