Change Type

cancel
Showing results for 
Search instead for 
Did you mean: 
kleber
Member II

Change Type

Alg aqui já utilizou esse recurso do Alfresco. Estou querendo popular essa lista com os Tipos Documentais que já fiz. Tentei configurar o share-config-custom mais não tive muito sucesso. Fico no aguardo de uma resposta.
A finalidade disso é: Dps que eu subi um arquivo XXX do Tipo ACB, quero trocar ele para o Tipo DEF.

Fico no aguardo.
Valeu.
9 Replies
gsdenys
Member II

Re: Change Type

Kleber,

    Esta configuração realmente fica no share-config custom. Para habilita-la adicione o ao seu arquivo de configuração (share-config-custom.xml), dentro da tag

<config evaluator="string-compare" condition="DocumentLibrary">


um codigo XML semelhante ao mostrado abaixo.


<types>
   <type name="cm:content">
      <subtype name="dgs:meuTipoDocumental" />
   </type>
   <type name="dgs:ACB">
       <subtype name="dgs:DEF" />
   </type>
</types>


Um detalhe que fará muita tens que atentar é quanto ao as dependências de tipos documentais. Neste caso o Tipo Documental dgs:meuTipoDocumental é filho de cm:content e o dgsSmiley Very HappyEF é filho de dgs:ACB.

Se tentar converter um tipo documental A para um tipo B cujas propriedades são totalmentes diferentes ocorerá perda de dados e possivelmente ERROS. Quando se converte um tipo pai em um tipo filho ocorre uma relação de herança, em que o filho herda os metadados do pai. se for ao contrário de filho para pai também haverá perda de metadaos, pois o filho pode ter mais campos que o pai.

<strong>PS:</strong> o bloco <config evaluator="string-compare" condition="DocumentLibrary"> completo do arquivo alfresco_home/tomcat/webapps/share/WEB-INF/classes/alfresco/share-documentlibrary-config.xml

Espero ter ajudado.

[]s
kleber
Member II

Re: Change Type

Fala Denys,

Obrigado por responder este tópico.
Depois da sua resposta a única coisa de diferente que obtive foi que no localhost:8080/share na opção Change Type, apareceu as opções que eu queria. No localhost:8080/alfresco em Run Action - Specialise type - Set Values and Add as opções já apareciam, mais não funcionavam.
Mais em ambos agora eu tento mudar o Tipo Documental, e me vem uma resposta que não foi possível de se atualizar. O fato de perder os valores dos metadados tudo bem, eu já estava ciente desse ocorrido.

Bem fico no aguardo.
Já alterei os dois arquivos, "share-config-custom.xml" e "share-documentlibrary-config.xml"
gsdenys
Member II

Re: Change Type

Kleber,

    Fui estudar a fundo sobre isto e ví que o que ocorre quando vc faz um "change type" é uma especialização do tipo documental. Assim faz-se necessário que o tipo <strong>dgsSmiley Very HappyEF</strong> seja necessáriamente filho de <strong>dgs:ACB</strong>.

   Resumindo, você so consegue, de forma nativa, fazer um change type de pai para filho ou neto ou bisneto …..

[]s
kleber
Member II

Re: Change Type

Denys,

Então neste caso, não vou conseguir.

Pois minha situação é a seguinte:
Tenho meu arquivo dgsModel.xml, e nele tenho dois Tipos Documentais, dgs:ABC e dgsSmiley Very HappyEF.


Neste caso eu teria que criar dgs:ABC_filho, por exemplo.

Pelo que entendi, eu posso subir um arquivo, e atrelar ele a dgs:ABC.
Mais amanhã vi que ele não era desse Tipo, então só vou poder trocar ele para dgs:ABC_filho.

Me parece algo como herança..
Se for isso, como criar então dgs:ABC_filho dentro de dgs:Model.xml

Uma duvida também, se eu estou querendo trocar ele de Tipo Documental, por qual motivo ele estaria amarrado ao Pai.


Valeu Denys pela ajuda que está me dando.
[]s
gsdenys
Member II

Re: Change Type

Kleber,

    Em seu caso acredito que eves criar um tipo pai generico que contenha as propriedades que são compartidas com os dois tipos em questão. Assim vc teria os tipos <strong>dgs:BASE</strong>, <strong>dgs:ABC</strong> e <strong>dgsSmiley Very HappyEF</strong>

   Abaixo segue uma forma de criar estes tipos

<type name="dgs:BASE">
   <title>Tipo básico de documento</title>
   <parent>cm:content</parent>
   <properties>
      <property name="dgs:prop01">
         <title>Propriedade compartilhada</title>
         <description>Propriedade compartilhada entres os tipos documentais ABC e DEF</description>
         <type>d:text</type>
      </property>
   </properties>
</type>
<type name="dgs:ABC">
   <title>ABC</title>
   <!– Note que o tipo ABC tem o pai como sendo BASE –>
   <parent>dgs:BASE</parent>
   <properties>
      <property name="dgs:propABC01">
         <title>Prop ABC 01</title>
         <type>d:text</type>
      </property>
   </properties>
</type>
<type name="dgs:DEF">
   <title>DEF</title>
   <!– Note que o tipo DEF tem o pai como sendo BASE –>
   <parent>dgs:BASE</parent>
   <properties>
      <property name="dgs:propDEF01">
         <title>Prop DEF 01</title>
         <type>d:text</type>
      </property>
   </properties>
</type>


[]s
kleber
Member II

Re: Change Type

Fala Denys,

Deu certo a troca de Tipo Documental sem eu precisar fazer o download e upload do arquivo.
Mais uma coisa que notei, foi que o arquivo fica registrado no Alfresco com os 2 Tipos Documentais.

Fiz uma pesquisa pelo Lucene e ele me trouxe o mesmo arquivo como dgs:BASE (Tipo que o arquivo foi inserido) e dgs:ABC (Tipo em que o arquivo assumiu). Isso futuramente pode trazer algum problema em um relatório ou algo parecido.

Bem, tenho apenas mais duas duvidas, que ainda estou tentando resolver.

1- Como trocar o nome no box do Change Type.
No arqruivo share-config-custom.xml na tag <config evaluator="string-compare" condition="DocumentLibrary"> eu tentei fazer o seguinte, mais não funcionou…
<types>
    <type name="dgs:BASE">
        <subtype name="dgs:ABC">Tipo ABC</subtype>
   <subtype name="dgs:DEF">Tipo DEF</subtype>
    </type>
</types>


2- Na tag <subtype name="dgs:ABC">Tipo ABC</subtype> quando eu clicar nesta opção no /share, ele troca para o Tipo ABC, e ainda me chama um javascript. Seria isso:
<blockcode><types>
    <type name="dgs:BASE">
        <subtype name="dgs:ABC">Tipo ABC</subtype>
            <js src="/Company Home/Data Dictionary/Scripts/nomeScript.js" />
   <subtype name="dgsSmiley Very HappyEF">Tipo DEF</subtype>
    </type>
</types></blockcode>


Valeu Denys, o meu problema você ajudou a resolver… Obrigado mesmo.
Só estou querendo acertar esses detalhes.

[]s







gsdenys
Member II

Re: Change Type

Kleber,

   Não sei se existe outra forma, mas creio que para isto será necessário criar um Java Behavior para o alfresco que é iniciado por OnSetNodeTypePolicy. Talves algo como

public void init() {
   JavaBehaviour javaBehaviour = new JavaBehaviour(this, OnSetNodeTypePolicy.QNAME.getLocalName(), NotificationFrequency.EVERY_EVENT);
   this.policyComponent.bindClassBehaviour(OnSetNodeTypePolicy.QNAME, CUSTOM_TYPE, javaBehaviour);
}

@Override
public void onSetNodeType(NodeRef nodeRef, QName oldType, QName newType) {
    //Criar Metodo para iniciar a execução do script
}


Se for criar um behavior para executar a chamada de um JS, tenha cuidado para fazer um generico configuravel através de alfresco-global.properties por exemplo.

[]s
kleber
Member II

Re: Change Type

Fala Denys,

Obrigado pela ajuda, mais fiz de um outro jeito. Não sei se é considerado uma "gambiarra", mais até agora nos meus testes está funcionando.

Nos Tipos Documentais criei um campo chamado "Flag" e neles já deixo os valores fixos de cada tipo Documental.
Por Exemplo: no meu Tipo Documental gds:ABC o campo gds:flag_ABC já vem com o valor default "Tipo ABC", e nele eu não deixo editável para o usuário, e se for pensar ele nem precisa ser exibido. A função dele mesmo seria mais para relatório, como se ele me ajudasse em algum filtro.

Mais é isso, obrigado Denys.
Valeu. []s
stefan6874
Member II

Re: Change Type

Obrigado por compartilhar.
______________________________________
nutribullet recipe book