Compartilhamento de Registros

O Ownership Service é uma API para gerenciamento do Compartilhamento de Registros disponível na plataforma. Por meio do Ownership Service é possível compartilhar registros com usuários, times e classificar o nível de compartilhamento entre acesso total e somente leitura.

Estrutura básica:

module.exports = (function() {
  'use strict';
  var _osBd = null;

  function getOwnershipService() {
    if (_osBd == null) {
      var OwnershipService = Java.type('br.com.inpaas.entity.ownership.OwnershipService');
      _osBd = new OwnershipService(scriptContext); 
    }
    return _osBd;
  }

  function getCurrentOwnership(entityName, entityRecordID) {
    var entity = require('inpaas.core.entity.dao').getEntity(entityName);
    return getOwnershipService().get(entity, entityRecordID);
  }

  function setOwnership(entityName, entityRecordID, owners) {
    var entity = require('inpaas.core.entity.dao').getEntity(entityName);
    return getOwnershipService().set(entity, entityRecordID, owners);
  }
  
  function addToCurrentOwnershipList(entityRecordID, type, id, entityName, readonly) {
    var owners = getCurrentOwnership(entityName, entityRecordID);
    var read = (readonly)  ? true : false;
      
    owners.add({
      'type': type,
      'id': id,
      'readonly': read
    });
      
    setOwnership(entityName, entityRecordID, owners);
  }

  return {
    'getCurrentOwnership': getCurrentOwnership,
    'addToCurrentOwnershipList': addToCurrentOwnershipList,
    'setOwnership': setOwnership
  };

})();

Métodos da Estrutura Inicial

getCurrentOwnership(entityName, entityRecordID):

Responsável por retornar uma lista com os usuários, times e permissões no compartilhamento de registros atual.

Utilização:

var owners = getCurrentOwnership('INPAAS_REEMBOLSO', 1)

addToCurrentOwnershipList(entityRecordID, type, id, entityName, readonly):
Adiciona um novo usuário/time na lista de compartilhamento de registros atual.
O parâmetro "type" deve ser repassado com uma string que classifica o tipo de compartilhamento, sendo: "U" para usuários e "T" para times.
O parâmetro "readonly" é opcional, o mesmo aceita um valor boolean que classifica o tipo de acesso ao registro, sendo: true para acesso somente leitura e false para acesso total.

Utilização:

var record_id = 1;
var type = "U";
var id_user = "32";
var entity_name = "INPAAS_REEMBOLSO";

addToCurrentOwnershipList(record_id, type, id_user, entity_name, true):

setOwnership(entityName, entityRecordID, owners):
Substituí o compartilhamento de registros atual pelo passado no parâmetro do método. Você pode chamar esse método diretamente para atualizar a lista de compartilhamento de forma customizada, ou seja, sem manter o histórico.

Utilização:

var entity_name = "INPAAS_REEMBOLSO";
var record_id = 1;
var owners = [
  {
    'type': "U",
    'id': 32,
    'readonly': false
  },
  {
    'type': "T",
    'id': 4,
    'readonly': true
  }
];



setOwnership(entity_name, 1, owners);