Skip to content

Instantly share code, notes, and snippets.

@brunogasparetto
Created January 22, 2024 21:47
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save brunogasparetto/04d5af4cd4588bd5a59357e8af3bfee3 to your computer and use it in GitHub Desktop.
Save brunogasparetto/04d5af4cd4588bd5a59357e8af3bfee3 to your computer and use it in GitHub Desktop.
Fluig: Exemplo de criação de pasta utilizando o serviço ECMFolderService
// Deve-se cadastrar o serviço ECMFolderService pelo painel de controle
/**
* Cria uma pasta
*
* Deve-se passar as constraints:
* - parentId: ID da pasta pai;
* - folderName: Nome da pasta a ser criada;
*
* O Dataset retorna o ID da pasta criada.
*
* @param {string[]} fields Campos Solicitados
* @param {Constraint[]} constraints Filtros
* @param {string[]} sorts Campos da Ordenação
* @returns {Dataset}
*/
function createDataset(fields, constraints, sorts) {
var userLogin = "admin";
var userPassword = "admin";
var userCode = "admin"; // Matrícula
var dataset = DatasetBuilder.newDataset();
dataset.addColumn("success");
dataset.addColumn("message");
dataset.addColumn("folderId");
var parentId = parseInt(getConstraintValue(constraints, "parentId"));
var folderName = getConstraintValue(constraints, "folderName");
if (!parentId || folderName == "") {
dataset.addRow([
"0",
"Obrigatório informar as constraints parentId e folderName",
""
]);
return dataset;
}
try {
var serviceHelper = ServiceManager.getService("ECMFolderService").getBean();
var service = serviceHelper.instantiate("com.totvs.technology.ecm.dm.ws.ECMFolderServiceService").getFolderServicePort();
var result = service.createSimpleFolder(
userLogin,
userPassword,
getValue("WKCompany"),
parentId,
userCode,
folderName
);
dataset.addRow([
"1",
"Pasta Criada",
result.getItem().get(0).getDocumentId().toString()
]);
return dataset;
} catch (err) {
dataset.addRow([
"0",
err,
""
]);
return dataset;
}
}
/**
* Pega o valor inicial de uma constraint
*
* @param {Constraint[]} constraints
* @param {string} field
* @returns {string}
*/
function getConstraintValue(constraints, field) {
for (var i = 0; i < constraints.length; ++i) {
if (constraints[i].fieldName == field) {
return constraints[i].initialValue;
}
}
return "";
}
@KevenArbache
Copy link

bom dia, excelente código poderia me informar como eu passo as seguranças na pasta?

@brunogasparetto
Copy link
Author

@KevenArbache , no caso do método createSimpleFolder a segurança é herdada da pasta pai.

Se a intenção é configurar segurança específica para a pasta será necessário utilizar o método createFolder. Infelizmente nunca utilizei esse método pra orientar como utilizá-lo. Mas na documentação do Fluig e testando pelo SoapUI dá pra ter uma ideia do que é necessário.

@KevenArbache
Copy link

@KevenArbache , no caso do método createSimpleFolder a segurança é herdada da pasta pai.

Se a intenção é configurar segurança específica para a pasta será necessário utilizar o método createFolder. Infelizmente nunca utilizei esse método pra orientar como utilizá-lo. Mas na documentação do Fluig e testando pelo SoapUI dá pra ter uma ideia do que é necessário.

entendi bruno, muito obrigado!

Eu tava usando a docApi, pegava os anexos de um processo montava o array de segurança, criava a pasta e jogava os anexos lá dentro, sempre funcionou até descobrir que usuário que não é admin não tem permissão de criar e anexar na pasta, ai precisaria de um serviço para ter um admin.

@brunogasparetto
Copy link
Author

Então, o problema de usar a SDK é que o usuário que está executando precisa da permissão.

Nessas ocasiões eu acabo utilizando a SDK somente nas Atividades de Serviço com execução Automática, pois aí o usuário utilizado é o admin configurado para a empresa.

@KevenArbache
Copy link

Fico grato demais pela sua explicação, me esclareceu bastante!

acredito que irei permitir a gravação de pastas para todos, e a publicação apenas pelo serviço do admin, tem algum exemplo seu que pega anexos de um processo e sobe para uma determinada pasta no ged na atividade de serviço?

@brunogasparetto
Copy link
Author

Não. Aqui normalmente faço o contrário. Gero algum arquivo em algum serviço externo (pdf, word etc.) e aí preciso anexar no processo. Mas como a hAPI precisa do arquivo no GED eu salvo o arquivo em alguma pasta do GED e depois só adiciono como anexo no processo.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment