createDocument - ECM REST

Eu estou tentando criar um documento via REST.

Entretanto, após muitas e infrutíferas tentativas, jogo a toalha e venho aqui pedir ajuda aos amigos.

No console do Chrome, tenho sempre o mesmo erro

message: {message: null, detail: null, type: "ERROR", param: null, errorCode: "ECMException"}

que não dá pista de nada.

Meu código Javascript está abaixo e vou comentando as linhas, a fim de demonstrar meus pensamentos.

Tentei usar o FLUIGC upload. Sem resultado. Fiz o upload via Filezilla e é esta é a última tentativa, do jeito que está o código agora. Os caminhos do iconPath e do PhysicalFile apontei para a estrutura da pasta Volume que é associada à pasta de instalação do Fluig.


criarDocumentoREST:function(){
        var caminhoFalsoArquivo=jQuery("#myInputFile").val();//valor que vem do html Input type File.
        var arquivo=caminhoFalsoArquivo.substring(12);//tiro o caminho FAKE
        //FLUIGC.utilities.parseInputFile("#myInputFile");//tento fazer upload para a área do usuário (anulado)
        var _jSonRest= {
                    "content": {
                          "id"                      : "1951",
                          "version"                 : "1000",
                          "companyId"               : "1",
                          "type"                    : "2",
                          "description"             : "descrição",
                          "additionalComments"      : "comentário adicional",
                          "colleagueId"             : "ucrgrj",
                          "iconPath"                : "/upload/pageIcon/arcos1.jpg",
                          "publisherId"             : "ucrgrj",
                          "publisherName"           : "Administrador",
                          "immutable"               :  false,
                          "createDate"              : "2019-03-14",
                          "approvedDate"            : "2019-03-14",
                          "expirationDate"          : "2019-03-14",
                          "validationStartDate"     : "2019-03-14",
                          "lastModifiedDate"        : "2019-03-14",
                          "parentId"                : "10",
                          "activeVersion"           : true,
                          "phisicalFile"            : "/upload/ucrgrj/MervalPereira.pdf",
                          "securityLevel"           : "0",
                          "onCheckout"              : false,
                          "forApproval"             : false,
                          "removed"                 : false,
                          "isPrivate"               : false,
                          "crc"                     : 19510828,
                          "userPermission"          : "0",
                          "attachments"             : [{
                              "fileName"   : "MervalPereira.pdf",
                              "principal"  : true,
                              "attachment" : false
                          }],
                          "documentPropertyNumber"  : "10",
                          "documentPropertyVersion" : "1000"
                    },
                    "message": "x" 
        }
        //data:JSON.stringify(_jSonRest),
        jQuery.ajax({
            async:false,
            type:'POST',
            dataType:'json',
            contentType:'application/json;charset=utf-8',
            data:JSON.stringify(_jSonRest),
            url:'/api/public/ecm/document/createDocument',
            success: function(retorno){
                    alert (retorno);
            }//success
        });    
    }//criarDocumentoREST

Os valores que alimentam os pares no JSon já tentei vários. Principalmente os caminhos para os arquivos para attachment.

Baixe o arquivo exemplo "DocumentServiceClient.java" da página http://tdn.totvs.com/pages/releaseview.action?pageId=73084007. Ele está no final do método createDocument.

Nesse arquivo, localize o método e você verá cada um dos campos sendo "setados" e preste atenção nos tipos dos dados: numéricos ou strings. Além disso, parece estar faltando algumas tags com informações, revise seu código.

Caro @Denilson, obrigado pela resposta. Mas este arquivo está em java e estou usando javascript, conforme meu código acima.

Olá Mausim,

tente enviar os dados do documento no JSON diretamente sem a propriedade content (o content só existe no JSON de resposta), por exemplo o seu JSON do exemplo ficaria:


var _jSonRest= {
          "id"                      : "1951",
          "version"                 : "1000",
          "companyId"               : "1",
          "type"                    : "2",
          "description"             : "descrição",
          "additionalComments"      : "comentário adicional",
          "colleagueId"             : "ucrgrj",
          "iconPath"                : "/upload/pageIcon/arcos1.jpg",
          "publisherId"             : "ucrgrj",
          "publisherName"           : "Administrador",
          "immutable"               :  false,
          "createDate"              : "2019-03-14",
          "approvedDate"            : "2019-03-14",
          "expirationDate"          : "2019-03-14",
          "validationStartDate"     : "2019-03-14",
          "lastModifiedDate"        : "2019-03-14",
          "parentId"                : "10",
          "activeVersion"           : true,
          "phisicalFile"            : "/upload/ucrgrj/MervalPereira.pdf",
          "securityLevel"           : "0",
          "onCheckout"              : false,
          "forApproval"             : false,
          "removed"                 : false,
          "isPrivate"               : false,
          "crc"                     : 19510828,
          "userPermission"          : "0",
          "attachments"             : [{
              "fileName"   : "MervalPereira.pdf",
              "principal"  : true,
              "attachment" : false
          }],
          "documentPropertyNumber"  : "10",
          "documentPropertyVersion" : "1000"
}

Obs: acho que que para criar um documento simples não é necessário todas essas propriedades no JSON. Você pode testar um JSON mais enxuto como:


var _jSonRest= {
          "description"             : "descrição",
          "additionalComments"      : "comentário adicional",
          "colleagueId"             : "ucrgrj",
          "publisherId"             : "ucrgrj",
          "parentId"                : "10",
          "activeVersion"           : true,
          "attachments"             : [{
              "fileName"   : "MervalPereira.pdf",
              "principal"  : true
          }]
}

Caro Diogo, obrigado. Não funcionou. A mensagem de erro é {code: “Internal Server Error”, success: false,…} code: “Internal Server Error” message: “java.lang.NoClassDefFoundError: com/fluig/api/tools/response/ErrorResponse” success: false

Além disto, não posso usar a abertura de documento no modo simples porque não tem todos os campos que preciso.

Pode ser algum pequeno detalhe pois acabei de testar as duas formas de JSON que lhe passei, utilizando a sua chamada com JQuery.ajax da pergunta e ambas funcionaram, isso após fazer o upload do arquivo via ftp para a pasta de upload do meu usuário

Minha mensagem, após a dica do @Diogo, era assim. Mas há uma correção para quem precisar, no fim.

Caro @Diogo, meu código inteiro é este:


//-------------------------------html na Widget (parte):

<div class="col-sm-10">
            <button type="button" id="idBtnBiblioRegistroSalvarRest" name="namBtnBiblioRegistroSalvarReste"
                class="form-control btn btn-info" data-criarDocumentoREST>Salvar
            </button>
        </div>




//---------------------------------------javascript
var w_biblio_registro = SuperWidget.extend({
    //variáveis da widget
    variavelNumerica: null,
    variavelCaracter: null,

    //método iniciado quando a widget é carregada
    init: function() {
        /*
         var _this = this;

        var _jSonRest=null;
}//init
        ,

    //BIND de eventos
    bindings: {
        local: {
            'execute': ['click_executeAction'],
            'criarDocumentoSimples':['click_criarDocumentoSimples'],
            'criarDocumento':['click_criarDocumento'],
            'criarDocumentoREST':['click_criarDocumentoREST']
        },
        global: {}
    }
    ,
    executeAction: function(htmlElement, event) {
    },
criarDocumentoREST:function(){
        var caminhoFalsoArquivo=jQuery("#myInputFile").val();
        var arquivo=caminhoFalsoArquivo.substring(12);
        //FLUIGC.utilities.parseInputFile("#myInputFile");
        var _jSonRest= {
                  "id"                      : "1951",
                  "version"                 : "1000",
                  "companyId"               : "1",
                  "type"                    : "2",
                  "description"             : "descrição",
                  "additionalComments"      : "comentário adicional",
                  "colleagueId"             : "ucrgrj",
                  "iconPath"                : "/upload/pageIcon/fluig_biblio.jpg",
                  "publisherId"             : "ucrgrj",
                  "publisherName"           : "Administrador",
                  "immutable"               :  false,
                  "createDate"              : "2019-03-14",
                  "approvedDate"            : "2019-03-14",
                  "expirationDate"          : "2019-03-14",
                  "validationStartDate"     : "2019-03-14",
                  "lastModifiedDate"        : "2019-03-14",
                  "parentId"                : "10",
                  "activeVersion"           : true,
                  "phisicalFile"            : "/upload/ucrgrj/MervalPereira.pdf",
                  "securityLevel"           : "0",
                  "onCheckout"              : false,
                  "forApproval"             : false,
                  "removed"                 : false,
                  "isPrivate"               : false,
                  "crc"                     : 19510828,
                  "userPermission"          : "0",
                  "attachments"             : [{
                      "fileName"   : "MervalPereira.pdf",
                      "principal"  : true,
                      "attachment" : false
                  }],
                  "documentPropertyNumber"  : "10",
                  "documentPropertyVersion" : "1000"
        }
//----------------------------------------
        jQuery.ajax({
            method:'POST',
            data:JSON.stringify(_jSonRest),
            url:'/api/public/ecm/document/createDocument',
             beforeSend: function( xhr ) {
                    xhr.overrideMimeType( "application/json;charset=utf-8" );
                  },
            success: function(retorno){
                    alert (retorno);
            },//success
            error: function (x,e,e2){
                alert (x.status+" "+e+' '+e2);
            }//error
        });    
    }//criarDocumentoREST
});//widget


A quem interessar possa, o que funcionou foi o seguinte:

Marcação HTML:


<div class="col-sm-10">
<button type="button" id="idBtnBiblioRegistroSalvar" name="namBtnBiblioRegistroSalvar"
class="form-control btn btn-success" data-criarDocumentoREST>Salvar
</button>
</div>
</div><!-- group -->

Javascript (seção Bind):


 bindings: {
        local: {
            'criarDocumentoREST':['click_criarDocumentoREST']
        },

Javascript (função):


criarDocumentoREST:function(){

            var _jSonRest= {
                      "id"                      : "1951",
                      "version"                 : "1000",
                      "companyId"               : "1",
                      "type"                    : "2",
                      "description"             : "descrição",
                      "additionalComments"      : "comentário adicional",
                      "colleagueId"             : "ucrgrj",
                      "iconPath"                : "/upload/pageIcon/fluig_biblio.jpg",
                      "publisherId"             : "ucrgrj",
                      "publisherName"           : "Administrador",
                      "immutable"               :  false,
                      "createDate"              : "2019-03-14",
                      "approvedDate"            : "2019-03-14",
                      "expirationDate"          : "2019-03-14",
                      "validationStartDate"     : "2019-03-14",
                      "lastModifiedDate"        : "2019-03-14",
                      "parentId"                : "10",
                      "activeVersion"           : true,
                      "phisicalFile"            : "/upload/ucrgrj/MervalPereira.pdf",
                      "securityLevel"           : "0",
                      "onCheckout"              : false,
                      "forApproval"             : false,
                      "removed"                 : false,
                      "isPrivate"               : false,
                      "crc"                     : 19510828,
                      "userPermission"          : "0",
                      "attachments"             : [{
                          "fileName"   : "MervalPereira.pdf",
                          "principal"  : true,
                          "attachment" : false
                      }],
                      "documentPropertyNumber"  : "10",
                      "documentPropertyVersion" : "1000"
            }
    //----------------------------------------
            jQuery.ajax({ 
                method:'POST',
                data:JSON.stringify(_jSonRest),
                url:'/api/public/ecm/document/createDocument',
                dataType:'json',
                contentType:'application/json;charset=utf-8',
                success: function(retorno)
                { 
                    alert (retorno.content); 
                    },//success 
                error: function (x,e,e2){ 
                    alert (x.status+" "+e+' '+e2); 
                }//error 
                });
        }//criarDocumentoREST

Eu usei o ajax passando o dataType e o contentType assim como você tinha postado na pergunta: jQuery.ajax({ method:'POST', data:JSON.stringify(_jSonRest), url:'/api/public/ecm/document/createDocument', dataType:'json', contentType:'application/json;charset=utf-8', success: function(retorno){ alert (retorno.content); },//success error: function (x,e,e2){ alert (x.status+" "+e+' '+e2); }//error });

Funcionou, após eu trocar a chamada .ajax, conforme você me alertou - porque andei misturando os códigos, no desespero de tantas tentativas infrutíferas. Valeu, @Diogo!

Você pode por favor da um exemplo que como resolveu?