0

私はcreatefolderまたはstreamupdateを使用していますが、問題は、そのバージョンが2回であるということです。つまり、すべてのアップロードを屋外で行います。

uploadFile....を呼び出してドキュメントバージョンバージョン0.2バージョン01に戻る

もう一度..uploadFileを呼び出します....ドキュメントバージョンに戻ります

バージョン0.4バージョン0.3

....アップロードファイルのバージョンを1つだけバージョン化するにはどうすればよいですか?

ドキュメントの作成とドキュメントの更新のコードは次のとおりです。

ドキュメントを作成...

    FileInputStream fis = new FileInputStream(file);
    DataInputStream dis = new DataInputStream(fis);
    byte[] bytes = new byte[(int) file.length()];
    dis.readFully(bytes);

    Map<String, String> newDocProps = new HashMap<String, String>();
    newDocProps.put(PropertyIds.OBJECT_TYPE_ID, "cmis:document");
    newDocProps.put(PropertyIds.NAME, file.getName());
    newDocProps.put(PropertyIds.IS_LATEST_VERSION, "TRUE");
    List<Ace> addAces = new LinkedList<Ace>();
    List<Ace> removeAces = new LinkedList<Ace>();
    List<Policy> policies = new LinkedList<Policy>();
    try {
        ContentStream contentStream = new ContentStreamImpl(file.getName(),  BigInteger.valueOf(bytes.length), fileType, new ByteArrayInputStream(bytes));
        Document doc = folder.createDocument(newDocProps, contentStream, VersioningState.MINOR, policies, removeAces, addAces, session.getDefaultContext());
        AlfrescoDocument alfDoc = (AlfrescoDocument) doc; 
        if(alfDoc.hasAspect("P:cm:versionable")) { 
          Map<String, Object> properties = new HashMap<String, Object>(); 
          properties.put("cm:autoVersion", true); 
          alfDoc.updateProperties(properties); 
        }
    } catch (Exception e) {
        if(e.getMessage().contains("Conflict")){
            Document document = (Document) session.getObject(session.getObjectByPath(".../Space/"+file.getName()).getId());
            ContentStream contentStream = new ContentStreamImpl(file.getName(), BigInteger.valueOf(bytes.length), fileType, new ByteArrayInputStream(bytes));
            updateDcoument(document,contentStream);             

        }

    }
}
4

1 に答える 1

0

コードでは、ドキュメントの 2 つのバージョンを実際に作成します。

Document doc = folder.createDocument(newDocProps, contentStream, VersioningState.MINOR, policies, removeAces, addAces, session.getDefaultContext());

alfDoc.updateProperties(properties);

デフォルトcm:versionableでは、後者の呼び出しcm:autoVersionOnUpdatePropsに設定されているように設定されているためtrue、作成される新しいバージョンが発行されます。定義を変更することにより、そのプロパティをfalseオブジェクトまたはグローバルに設定できます。ドキュメントcm:versionableを参照してください。

于 2013-02-21T11:07:06.890 に答える