0

質問の説明とコードが更新されました

int attachmentid = 123;質問 1:カスタム プロパティ sc:OpenERPattachmentID1 を読み取ってそこに格納されている id 値を取得するには、以下のコードのダミーを何に置き換えればよいでしょうか? (質問 1 は alfrescian によって回答されました!)

package com.openerp.behavior;



import java.util.List;
import java.net.*;
import java.io.*;


import org.alfresco.repo.node.NodeServicePolicies;

import org.alfresco.repo.policy.Behaviour;

import org.alfresco.repo.policy.JavaBehaviour;

import org.alfresco.repo.policy.PolicyComponent;

import org.alfresco.repo.policy.Behaviour.NotificationFrequency;

import org.alfresco.repo.security.authentication.AuthenticationUtil;

import org.alfresco.repo.security.authentication.AuthenticationUtil.RunAsWork;

import org.alfresco.service.cmr.repository.ChildAssociationRef;

import org.alfresco.service.cmr.repository.NodeRef;

import org.alfresco.service.cmr.repository.NodeService;

import org.alfresco.service.namespace.NamespaceService;

import org.alfresco.service.namespace.QName;

import org.alfresco.service.transaction.TransactionService;

import org.apache.log4j.Logger;



//import com.openerp.model.scOpenERPModel;

public class DeleteAsset implements NodeServicePolicies.BeforeDeleteNodePolicy  {



    private PolicyComponent policyComponent;

    private Behaviour beforeDeleteNode;
    private NodeService nodeService;



    public void init() {

        this.beforeDeleteNode = new JavaBehaviour(this,"beforeDeleteNode",NotificationFrequency.EVERY_EVENT);

        this.policyComponent.bindClassBehaviour(QName.createQName(NamespaceService.ALFRESCO_URI,"beforeDeleteNode"), 

                QName.createQName(scOpenERPModel.NAMESPACE,scOpenERPModel.ASSET_CONTENT_TYPE), this.beforeDeleteNode);

    }
    public setNodeService(NodeService nodeService){
           this.nodeService = nodeService;  
        }




    @Override

    public void beforeDeleteNode(NodeRef node) {

        System.out.println("beforeDeleteNode!");

        try {
            QName attachmentID1= QName.createQName("http://www.someco.com/model/content/1.0", "OpenERPattachmentID1"); // this could/shoul be defined in your OpenERPModel-class
            int attachmentid = (Integer)nodeService.getProperty(node, attachmentID1);
            //int attachmentid = 123;
            URL oracle = new URL("http://0.0.0.0:1885/delete/%20?attachmentid=" + attachmentid);
            URLConnection yc = oracle.openConnection();
            BufferedReader in = new BufferedReader(new InputStreamReader(
                        yc.getInputStream()));
            String inputLine;
            while ((inputLine = in.readLine()) != null) 
            //System.out.println(inputLine);
                in.close(); 

        } catch(Exception e) {

            e.printStackTrace();

        }



    }

}

質問 2: DeleteAsset.class はどこに配置すればよいですか?

私は Java と Alfresco の初心者です。誰かが alfresco-4.2.c/tomcat/webapps/alfresco/WEB-INF/classes/com/openerp/behavior/ を配置するのに適切なフォルダーであるかどうかを教えていただければ幸いですコンパイルされた DeleteAsset.class

質問 3: NAMESPACE と ASSET_CONTENT_TYPE には何を入力すればよいですか? まだチュートリアルを持っていないので、モデル クラスなしで作業したいのですが、何に置き換えればよいscOpenERPModel.NAMESPACE,scOpenERPModel.ASSET_CONTENT_TYPEでしょうか?

これは私の完全なカスタム Web コンテキスト ファイルです。

<?xml version='1.0' encoding='UTF-8'?>
 <!DOCTYPE beans PUBLIC '-//SPRING//DTD BEAN//EN'
 'http://www.springframework.org/dtd/spring-beans.dtd'>

 <beans>
<!-- Registration of new models -->
<bean id="smartsolution.dictionaryBootstrap" parent="dictionaryModelBootstrap"
 depends-on="dictionaryBootstrap">
    <property name="models">
        <list>
                <value>alfresco/extension/scOpenERPModel.xml</value>
        </list>
    </property>
</bean>

<!-- deletion of attachments within openERP when delete is initiated in Alfresco-->
<bean id="deletionBehavior" class="com.openerp.behavior.DeleteAsset" init-method="init">
    <property name="nodeService">
        <ref bean="nodeService" />
    </property>
    <property name="policyComponent">
        <ref bean="policyComponent" />
    </property>
</bean>

4

1 に答える 1

3

さて、あなたには長い道のりがあります...「オラクル」接続で何を達成したいですか?

主な質問に答えるには: プロパティの読み方:

  1. XML モデルを com/openerp/model/scOpenERPModel に入れないでください。カスタム タイプ、アスペクト、小道具にアクセスするための定数を定義する Java クラスにする必要があります (例: https://svn.alfresco.com/repos/alfresco -open-mirror/alfresco/HEAD/root/projects/data-model/source/java/org/alfresco/model/ContentModel.java ) しかし、これは必須ではありません。

  2. プロパティを読み取るには

    1. NodeService を挿入します。

      private NodeService nodeService;
      public setNodeService(NodeService nodeService){
         this.nodeService = nodeService;  
      }
      
    2. あなたのbeforeDeleteNodeで

      QName attachmentID1= QName.createQName("your sc NS uri", "OpenERPattachmentID1"); // this could/shoul be defined in your OpenERPModel-class
      int attachmentid = (Integer) nodeService.getProperty(node, attachmentID1);
      
于 2013-10-04T09:54:56.383 に答える