Gestione del contenuto dei documenti

Per gestire il contenuto dei documenti, è possibile utilizzare il tipo di dati ECMContentStream per eseguire il wrap di uno stream di contenuto e restituire le informazioni relative allo stream. Un flusso di contenuto è un flusso di dati che contiene il contenuto di un documento, ad esempio un documento di elaborazione testi o un'immagine.

Il tipo di dati ECMContentStream viene utilizzato nelle quattro operazioni ECM (Enterprise Content Management) riportate di seguito:
  • Check in documento
  • Crea documento
  • Ottieni contenuto documento
  • Impostare contenuto documento

Le informazioni su queste operazioni si trovano nell'argomento Associazione dati nelle operazioni di Enterprise Content Management.

Le proprietà per il tipo di dati ECMContentStream sono descritte nella tabella seguente:

Tabella 1. Proprietà ECMContentStream
Nome proprietà Descrizione
contentLength La lunghezza del contenuto originale (non codificato) in byte. Se la proprietà è impostata, la lunghezza deve essere un numero positivo. Se la lunghezza è sconosciuta, la proprietà non deve essere impostata.
mimeType Il tipo di supporto MIME del flusso di contenuto. Per il contenuto primario di un documento, il tipo di supporto MIME deve corrispondere al valore della proprietà cmis:contentStreamMimeType. Ad esempio, application / pdf.
fileName Il nome file del flusso di contenuto. Per il contenuto primario di un documento, il nome del file deve corrispondere al valore della proprietà cmis:contentStreamFileName.
content Il valore del documento. Deve essere di tipo String Base64 e codificato in UTF-8.
Limitazione:

Gli esempi funzionano solo su sistemi IBM Business Automation Workflow tradizionali e non su sistemi Workflow inseriti in un contenitore. Consultare il link della funzione obsoleta: https://www.ibm.com/docs/en/baw/22.x?topic=examples-calling-java-through-javascript-deprecated

Il seguente esempio di frammenti di codice può essere utilizzato in un passo dello script per impostare un valore stringa in un oggetto ECMContentStream :
// Script sample code to set and encode the document content
var value = "abc";
var bytesValue = new Packages.java.lang.String(value).getBytes("UTF-8");
tw.local.contentStream = new tw.object.ECMContentStream();
tw.local.contentStream.contentLength = bytesValue.length;
tw.local.contentStream.mimeType = "text/plain";
tw.local.contentStream.content = Packages.javax.xml.bind.DatatypeConverter.printBase64Binary(bytesValue);
Il seguente frammento di codice di esempio può essere utilizzato in un passo dello script per ottenere un valore stringa da un oggetto ECMContentStream :
// Script sample code to get and decode the document content
var bytesValue = Packages.javax.xml.bind.DatatypeConverter.parseBase64Binary(tw.local.contentStream.content);
var value = new Packages.java.lang.String(bytesValue, "UTF-8");
I seguenti frammenti di codice di esempio possono essere usati in un passo di script per scrivere il contenuto di un file in un oggetto ECMContentStream :
// Script sample code to set and encode the document content from a file
var file = new Packages.java.io.File(tw.local.fileName);
var bytesValue = Packages.org.apache.commons.io.FileUtils.readFileToByteArray(file);

tw.local.contentStream = new tw.object.ECMContentStream();
tw.local.contentStream.contentLength = file.length();
tw.local.contentStream.fileName = file.getName();
tw.local.contentStream.mimeType = "text/plain"; // provide your designated mime type here
tw.local.contentStream.content = Packages.javax.xml.bind.DatatypeConverter.printBase64Binary(bytesValue);
I seguenti frammenti di codice di esempio possono essere utilizzati in un passo dello script per scrivere il contenuto da un oggetto ECMContentStream in un file:
// Script sample code to decode the document content and write it to a file
var bytesValue = Packages.javax.xml.bind.DatatypeConverter.parseBase64Binary(tw.local.contentStream.content);
var file = new Packages.java.io.File(tw.local.outputDirectory, tw.local.contentStream.fileName);
Packages.org.apache.commons.io.FileUtils.writeByteArrayToFile(file, bytesValue);