Praca z treścią dokumentu
Do pracy z treścią dokumentów można używać typu danych ECMContentStream, który opakowuje strumień treści i zwraca informacje o strumieniu. Strumień treści jest strumieniem danych, który zawiera treść dokumentu, na przykład dokument procesora tekstu lub obraz.
Typ danych ECMContentStream jest używany w czterech następujących operacjach systemów Enterprise Content Management (ECM):
- Wpisz dokument
- Utwórz dokument
- Pobierz treść dokumentu
- Ustaw treść dokumentu
Informacje na temat tych operacji znajdują się w temacie Odwzorowanie danych w operacjach zarządzania treścią w przedsiębiorstwie.
Właściwości typu danych ECMContentStream są opisane w następującej tabeli:
| Nazwa właściwości | Opis |
|---|---|
| contentLength | Długość pierwotnej (niezakodowanej) treści w bajtach. Gdy ta właściwość jest ustawiona, długość musi być wyrażona liczbą dodatnią. Jeśli długość jest nieznana, właściwości tej nie wolno ustawiać. |
| mimeType | Typ MIME strumienia treści. W przypadku podstawowej treści dokumentu, typ mime powinien być zgodny z właściwością cmis:contentStreamMimeType. Na przykład application/pdf. |
| fileName | Nazwa pliku strumienia treści. W przypadku podstawowej treści dokumentu, nazwa pliku powinna być zgodna z właściwością cmis:contentStreamFileName. |
| zarządzanie | Wartość dokumentu. Jej typem musi być String Base64 i musi być zakodowane w standardzie UTF-8. |
Ograniczenie:
Przykłady będą działać tylko w tradycyjnych systemach IBM Business Automation Workflow , a nie w kontenerowych systemach przepływu pracy. Informacje na ten temat zawiera odsyłacz do nieaktualnego składnika: https://www.ibm.com/docs/baw/22.x?topic=examples-calling-java-through-javascript-deprecated
Poniższego przykładowego fragmentu kodu można używać w kroku skryptu do ustawiania wartości łańcuchowej w obiekcie 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);Poniższego przykładowego fragmentu kodu można używać w kroku skryptu do pobierania wartości łańcuchowej z obiektu 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");Poniższych przykładowych fragmentów kodu można używać w kroku skryptu do zapisywania zawartości pliku do obiektu 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);Poniższych przykładowych fragmentów kodu można używać w kroku skryptu do zapisywania zawartości z obiektu ECMContentStream do pliku:
// 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);