OKMDocument
Fundamentos
Sección titulada «Fundamentos»En la mayoría de los métodos verá un parámetro llamado “docId”. El valor de este parámetro puede ser un UUID de nodo de documento válido.
Sobre el parámetro llamado “fldId”, el valor de este parámetro puede ser un UUID de carpeta válido o un nodo de expediente (record).
Sobre el parámetro llamado “dstId”, el valor de este parámetro puede ser un UUID de carpeta válido o un nodo de expediente (record).
Además, en todos los métodos verá un parámetro llamado “token”. Como las tareas de Cron se ejecutan en segundo plano sin autenticación, los métodos usados en ese escenario pueden usar el parámetro token. En el contexto de ejecución por defecto de la aplicación, debe usar el valor “null”, que indica que la aplicación debe usar la “sesión de usuario”.
Métodos
Sección titulada «Métodos»Descripción:
| Método | Valores de retorno | Descripción |
|---|---|---|
| create(String token, Document doc, InputStream is) | Document | Crea un nuevo documento. |
- El parámetro doc debe inicializarse con el valor de la ruta de OpenKM en el repositorio. Opcionalmente, también puede establecer los valores de palabras clave y título.
Ejemplo:
package com.openkm;
import java.io.FileInputStream;import java.io.InputStream;
import org.apache.commons.io.IOUtils;
import com.openkm.api.OKMDocument;import com.openkm.bean.Document;import com.openkm.util.ContextWrapper;
public class Test {
public static void main(String[] args) { InputStream is = null; try { OKMDocument okmDocument = ContextWrapper.getContext().getBean(OKMDocument.class); is = new FileInputStream("/home/openkm/sample.pdf"); Document doc = new Document(); doc.setPath("/okm:root/sample.pdf"); // Optional doc.setTitle("sample document"); doc.getKeywords().add("key1"); doc.getKeywords().add("key2"); // Create document doc = okmDocument.create(null, doc, is); System.out.println(doc); } catch (Exception e) { e.printStackTrace(); } finally { IOUtils.closeQuietly(is); } }}createWithPropertyGroup
Sección titulada «createWithPropertyGroup»Descripción:
| Método | Valores de retorno | Descripción |
|---|---|---|
| createWithPropertyGroup(String token, Document doc, InputStream is, String grpName, Map<String, String> properties) | Document | Igual que create(), pero además establece en la misma llamada las propiedades de un grupo de metadatos en la primera versión del documento, en lugar de un create() seguido de una llamada separada a OKMPropertyGroup.addGroup(). |
- El parámetro doc debe inicializarse con el valor de la ruta de OpenKM en el repositorio, igual que create(). El grpName debe ser un nombre de grupo de Metadata válido, y solo se aplican las propiedades que pertenecen a ese grupo — cualquier otra clave presente en el mapa properties se ignora.
Ejemplo:
package com.openkm;
import java.io.FileInputStream;import java.io.InputStream;import java.util.HashMap;import java.util.Map;
import org.apache.commons.io.IOUtils;
import com.openkm.api.OKMDocument;import com.openkm.bean.Document;import com.openkm.util.ContextWrapper;
public class Test {
public static void main(String[] args) { InputStream is = null; try { OKMDocument okmDocument = ContextWrapper.getContext().getBean(OKMDocument.class); is = new FileInputStream("/home/openkm/sample.pdf"); Document doc = new Document(); doc.setPath("/okm:root/sample.pdf");
Map<String, String> properties = new HashMap<>(); properties.put("okp:invoice.number", "INV-000");
// Create document with metadata in a single atomic call doc = okmDocument.createWithPropertyGroup(null, doc, is, "okg:invoice", properties); System.out.println(doc); } catch (Exception e) { e.printStackTrace(); } finally { IOUtils.closeQuietly(is); } }}createSimple
Sección titulada «createSimple»Descripción:
| Método | Valores de retorno | Descripción |
|---|---|---|
| createSimple(String token, String docPath, InputStream is) | Document | Crea un nuevo documento. |
Ejemplo:
package com.openkm;
import java.io.FileInputStream;import java.io.InputStream;
import org.apache.commons.io.IOUtils;
import com.openkm.api.OKMDocument;import com.openkm.bean.Document;import com.openkm.util.ContextWrapper;
public class Test {
public static void main(String[] args) { InputStream is = null; try { OKMDocument okmDocument = ContextWrapper.getContext().getBean(OKMDocument.class);
is = new FileInputStream("/home/openkm/sample.pdf"); String docPath = "/okm:root/sample.pdf"; Document doc = okmDocument.createSimple(null, docPath, is); System.out.println(doc); } catch (Exception e) { e.printStackTrace(); } finally { IOUtils.closeQuietly(is); } }}Descripción:
| Método | Valores de retorno | Descripción |
|---|---|---|
| delete(String token, String docId) | void | Elimina un documento. |
Ejemplo:
package com.openkm;
import com.openkm.api.OKMDocument;import com.openkm.util.ContextWrapper;
public class Test {
public static void main(String[] args) { try { OKMDocument okmDocument = ContextWrapper.getContext().getBean(OKMDocument.class); okmDocument.delete(null, "d50133e3-dbfa-4d01-a109-28785cd48f40"); } catch (Exception e) { e.printStackTrace(); } }}getProperties
Sección titulada «getProperties»Descripción:
| Método | Valores de retorno | Descripción |
|---|---|---|
| getProperties(String token, String docId) | Document | Devuelve las propiedades de un documento. |
Ejemplo:
package com.openkm;
import com.openkm.api.OKMDocument;import com.openkm.bean.Document;import com.openkm.util.ContextWrapper;
public class Test {
public static void main(String[] args) { try { OKMDocument okmDocument = ContextWrapper.getContext().getBean(OKMDocument.class); Document doc = okmDocument.getProperties(null, "3887ae75-dd67-4019-b4d1-2f6962815403"); System.out.println(doc); } catch (Exception e) { e.printStackTrace(); } }}getContent
Sección titulada «getContent»Descripción:
| Método | Valores de retorno | Descripción |
|---|---|---|
| getContent(String token, String docId, boolean checkout) | InputStream | Devuelve el contenido del documento. |
- Cuando el parámetro checkout es true, el documento se marca para edición.
Ejemplo:
package com.openkm;
import java.io.File;import java.io.FileOutputStream;import java.io.InputStream;import java.io.OutputStream;
import org.apache.commons.io.IOUtils;
import com.openkm.api.OKMDocument;import com.openkm.util.ContextWrapper;
public class Test {
public static void main(String[] args) { InputStream is = null; OutputStream fos = null; try { OKMDocument okmDocument = ContextWrapper.getContext().getBean(OKMDocument.class); is = okmDocument.getContent(null, "3887ae75-dd67-4019-b4d1-2f6962815403", false); File tmp = new File("/home/openkm/sample.pdf"); fos = new FileOutputStream(tmp); IOUtils.copy(is, fos); } catch (Exception e) { e.printStackTrace(); } finally { IOUtils.closeQuietly(is); IOUtils.closeQuietly(fos); } }}getContentByVersion
Sección titulada «getContentByVersion»Descripción:
| Método | Valores de retorno | Descripción |
|---|---|---|
| getContentByVersion(String token, String docId, String versionId) | InputStream | Devuelve el contenido del documento para una versión específica. |
- El parámetro versionId es el nombre de la versión del documento.
Ejemplo:
package com.openkm;
import java.io.File;import java.io.FileOutputStream;import java.io.InputStream;import java.io.OutputStream;
import org.apache.commons.io.IOUtils;
import com.openkm.api.OKMDocument;import com.openkm.util.ContextWrapper;
public class Test {
public static void main(String[] args) { InputStream is = null; OutputStream fos = null; try { OKMDocument okmDocument = ContextWrapper.getContext().getBean(OKMDocument.class); is = okmDocument.getContentByVersion(null, "f3a977f7-abfc-4f58-a033-988903b31473", "1.1"); File tmp = new File("/home/openkm/sample.pdf"); fos = new FileOutputStream(tmp); IOUtils.copy(is, fos); } catch (Exception e) { e.printStackTrace(); } finally { IOUtils.closeQuietly(is); IOUtils.closeQuietly(fos); } }}getExtractedText
Sección titulada «getExtractedText»Descripción:
| Método | Valores de retorno | Descripción |
|---|---|---|
| getExtractedText(String token, String docId) | String | Devuelve el texto extraído del documento. |
Ejemplo:
package com.openkm;
import com.openkm.api.OKMDocument;import com.openkm.util.ContextWrapper;
public class Test {
public static void main(String[] args) { try { OKMDocument okmDocument = ContextWrapper.getContext().getBean(OKMDocument.class); String indexedText = okmDocument.getExtractedText(null, "f3a977f7-abfc-4f58-a033-988903b31473"); System.out.println(indexedText); } catch (Exception e) { e.printStackTrace(); } }}getChildren
Sección titulada «getChildren»Descripción:
| Método | Valores de retorno | Descripción |
|---|---|---|
| getChildren(String token, String fldId) | List |
Devuelve una lista de todos los documentos cuyo padre es fldId. |
- El parámetro fldId puede ser un nodo de carpeta o de expediente (record).
Ejemplo:
package com.openkm;
import com.openkm.api.OKMDocument;import com.openkm.bean.Document;import com.openkm.util.ContextWrapper;
public class Test {
public static void main(String[] args) { try { OKMDocument okmDocument = ContextWrapper.getContext().getBean(OKMDocument.class); for (Document doc : okmDocument.getChildren(null, "b67fe3ae-bcca-4947-b8ea-0cc7aedd4474")) { System.out.println(doc); } } catch (Exception e) { e.printStackTrace(); } }}Descripción:
| Método | Valores de retorno | Descripción |
|---|---|---|
| rename(String token, String docId, String newName) | Document | Cambia el nombre de un documento. |
Ejemplo:
package com.openkm;
import com.openkm.api.OKMDocument;import com.openkm.bean.Document;import com.openkm.util.ContextWrapper;
public class Test {
public static void main(String[] args) { try { OKMDocument okmDocument = ContextWrapper.getContext().getBean(OKMDocument.class); Document doc = okmDocument.rename(null, "f3a977f7-abfc-4f58-a033-988903b31473", "samples_renamed.pdf"); System.out.println(doc); } catch (Exception e) { e.printStackTrace(); } }}setProperties
Sección titulada «setProperties»Descripción:
| Método | Valores de retorno | Descripción |
|---|---|---|
| setProperties(String token, Document doc) | void | Cambia algunas propiedades del documento. |
- Variables que se pueden cambiar:
Ejemplo:
package com.openkm;
import com.openkm.api.OKMDocument;import com.openkm.bean.Document;import com.openkm.util.ContextWrapper;
public class Test {
public static void main(String[] args) { try { OKMDocument okmDocument = ContextWrapper.getContext().getBean(OKMDocument.class); Document doc = okmDocument.getProperties(null, "f3a977f7-abfc-4f58-a033-988903b31473"); doc.getKeywords().add("key1"); doc.setDescription("some description"); okmDocument.setProperties(null, doc); } catch (Exception e) { e.printStackTrace(); } }}setLanguage
Sección titulada «setLanguage»Descripción:
| Método | Valores de retorno | Descripción |
|---|---|---|
| setLanguage(String token, String docId, String lang) | void | Establece el idioma del documento. |
- El parámetro lang debe cumplir con ISO 639-1.
Ejemplo:
package com.openkm;
import com.openkm.api.OKMDocument;import com.openkm.util.ContextWrapper;
public class Test {
public static void main(String[] args) { try { OKMDocument okmDocument = ContextWrapper.getContext().getBean(OKMDocument.class); okmDocument.setLanguage(null, "f3a977f7-abfc-4f58-a033-988903b31473", "en"); } catch (Exception e) { e.printStackTrace(); } }}setTitle
Sección titulada «setTitle»Descripción:
| Método | Valores de retorno | Descripción |
|---|---|---|
| setTitle(String token, String docId, String title) | void | Establece el título del documento. |
Ejemplo:
package com.openkm;
import com.openkm.api.OKMDocument;import com.openkm.util.ContextWrapper;
public class Test {
public static void main(String[] args) { try { OKMDocument okmDocument = ContextWrapper.getContext().getBean(OKMDocument.class); okmDocument.setTitle(null, "f3a977f7-abfc-4f58-a033-988903b31473", "Document title"); } catch (Exception e) { e.printStackTrace(); } }}checkout
Sección titulada «checkout»Descripción:
| Método | Valores de retorno | Descripción |
|---|---|---|
| checkout(String token, String docId) | void | Marca el documento para edición. |
- Solo un usuario puede modificar un documento a la vez.
- Antes de empezar a editar, debe realizar una acción de checkout que bloquea el proceso de edición para otros usuarios y solo permite editar al usuario que ejecutó la acción.
Ejemplo:
package com.openkm;
import com.openkm.api.OKMDocument;import com.openkm.util.ContextWrapper;
public class Test {
public static void main(String[] args) { try { OKMDocument okmDocument = ContextWrapper.getContext().getBean(OKMDocument.class); okmDocument.checkout(null, "f3a977f7-abfc-4f58-a033-988903b31473"); } catch (Exception e) { e.printStackTrace(); } }}cancelCheckout
Sección titulada «cancelCheckout»Descripción:
| Método | Valores de retorno | Descripción |
|---|---|---|
| cancelCheckout(String token, String docId) | void | Cancela la edición del documento. |
Ejemplo:
package com.openkm;
import com.openkm.api.OKMDocument;import com.openkm.util.ContextWrapper;
public class Test {
public static void main(String[] args) { try { OKMDocument okmDocument = ContextWrapper.getContext().getBean(OKMDocument.class); okmDocument.cancelCheckout(null, "f3a977f7-abfc-4f58-a033-988903b31473"); } catch (Exception e) { e.printStackTrace(); } }}forceCancelCheckout
Sección titulada «forceCancelCheckout»Descripción:
| Método | Valores de retorno | Descripción |
|---|---|---|
| forceCancelCheckout(String token, String docId) | void | Cancela la edición del documento. |
- Este método permite cancelar la edición de cualquier documento.
- No es obligatorio ejecutar esta acción como el mismo usuario que ejecutó previamente la acción de checkout.
Ejemplo:
package com.openkm;
import com.openkm.api.OKMDocument;import com.openkm.util.ContextWrapper;
public class Test {
public static void main(String[] args) { try { OKMDocument okmDocument = ContextWrapper.getContext().getBean(OKMDocument.class); okmDocument.forceCancelCheckout(null, "f3a977f7-abfc-4f58-a033-988903b31473"); } catch (Exception e) { e.printStackTrace(); } }}isCheckedOut
Sección titulada «isCheckedOut»Descripción:
| Método | Valores de retorno | Descripción |
|---|---|---|
| isCheckedOut(String token, String docId) | boolean | Devuelve un booleano que indica si el documento está en edición o no. |
Ejemplo:
package com.openkm;
import com.openkm.api.OKMDocument;import com.openkm.util.ContextWrapper;
public class Test {
public static void main(String[] args) { try { OKMDocument okmDocument = ContextWrapper.getContext().getBean(OKMDocument.class); System.out.println(okmDocument.isCheckedOut(null, "f3a977f7-abfc-4f58-a033-988903b31473")); } catch (Exception e) { e.printStackTrace(); } }}checkin
Sección titulada «checkin»Descripción:
| Método | Valores de retorno | Descripción |
|---|---|---|
| checkin(String token, String docId, InputStream is, String comment) | Version | Actualiza un documento con una nueva versión y devuelve un objeto con los valores de la nueva Version. |
Ejemplo:
package com.openkm;
import java.io.FileInputStream;import java.io.InputStream;
import org.apache.commons.io.IOUtils;
import com.openkm.api.OKMDocument;import com.openkm.util.ContextWrapper;
public class Test {
public static void main(String[] args) { InputStream is = null; try { OKMDocument okmDocument = ContextWrapper.getContext().getBean(OKMDocument.class); is = new FileInputStream("/home/openkm/sample.pdf"); okmDocument.checkin(null, "f3a977f7-abfc-4f58-a033-988903b31473", is, "optional comment"); } catch (Exception e) { e.printStackTrace(); } finally { IOUtils.closeQuietly(is); } }}checkin
Sección titulada «checkin»Descripción:
| Método | Valores de retorno | Descripción |
|---|---|---|
| checkin(String token, String docId, InputStream is, String comment, int increment) | Version | Actualiza un documento con una nueva versión y devuelve un objeto con los nuevos valores de Version. |
- El valor de increment depende de la implementación de VersionNumeration. Los valores habituales son:
Ejemplo:
package com.openkm;
import java.io.FileInputStream;import java.io.InputStream;
import org.apache.commons.io.IOUtils;
import com.openkm.api.OKMDocument;import com.openkm.plugin.vernum.VersionNumerationAdapter;import com.openkm.util.ContextWrapper;
public class Test {
public static void main(String[] args) { InputStream is = null; try { OKMDocument okmDocument = ContextWrapper.getContext().getBean(OKMDocument.class); is = new FileInputStream("/home/openkm/sample.pdf"); okmDocument.checkin(null, "f3a977f7-abfc-4f58-a033-988903b31473", is, "optional comment", VersionNumerationAdapter.INCREASE_MINOR); } catch (Exception e) { e.printStackTrace(); } finally { IOUtils.closeQuietly(is); } }}checkinWithPropertyGroup
Sección titulada «checkinWithPropertyGroup»Descripción:
| Método | Valores de retorno | Descripción |
|---|---|---|
| checkinWithPropertyGroup(String token, String docId, InputStream is, String comment, int increment, String grpName, Map<String, String> properties) | Version | Igual que checkin(), pero además aplica un cambio en las propiedades de un grupo de metadatos sobre la misma nueva versión, en lugar de un checkin() seguido de una llamada separada a OKMPropertyGroup.setProperties(). |
- El grpName ya debe estar asignado al documento (ver OKMPropertyGroup.addGroup()); solo se aplican las propiedades que pertenecen a ese grupo.
Ejemplo:
package com.openkm;
import java.io.FileInputStream;import java.io.InputStream;import java.util.HashMap;import java.util.Map;
import org.apache.commons.io.IOUtils;
import com.openkm.api.OKMDocument;import com.openkm.util.ContextWrapper;
public class Test {
public static void main(String[] args) { InputStream is = null; try { OKMDocument okmDocument = ContextWrapper.getContext().getBean(OKMDocument.class); is = new FileInputStream("/home/openkm/sample.pdf");
Map<String, String> properties = new HashMap<>(); properties.put("okp:invoice.number", "INV-001");
// Checkin + metadata update as a single atomic call okmDocument.checkinWithPropertyGroup(null, "f3a977f7-abfc-4f58-a033-988903b31473", is, "optional comment", 0, "okg:invoice", properties); } catch (Exception e) { e.printStackTrace(); } finally { IOUtils.closeQuietly(is); } }}Descripción:
| Método | Valores de retorno | Descripción |
|---|---|---|
| lock(String token, String docId) | LockInfo | Bloquea un documento y devuelve un objeto con la información del bloqueo. |
Ejemplo:
package com.openkm;
import com.openkm.api.OKMDocument;import com.openkm.bean.LockInfo;import com.openkm.util.ContextWrapper;
public class Test {
public static void main(String[] args) { try { OKMDocument okmDocument = ContextWrapper.getContext().getBean(OKMDocument.class); LockInfo lockInfo = okmDocument.lock(null, "f3a977f7-abfc-4f58-a033-988903b31473"); System.out.println(lockInfo); } catch (Exception e) { e.printStackTrace(); } }}Descripción:
| Método | Valores de retorno | Descripción |
|---|---|---|
| unlock(String token, String docId) | LockInfo | Desbloquea un documento bloqueado. |
Ejemplo:
package com.openkm;
import com.openkm.api.OKMDocument;import com.openkm.util.ContextWrapper;
public class Test {
public static void main(String[] args) { try { OKMDocument okmDocument = ContextWrapper.getContext().getBean(OKMDocument.class); okmDocument.unlock(null, "f3a977f7-abfc-4f58-a033-988903b31473"); } catch (Exception e) { e.printStackTrace(); } }}forceUnlock
Sección titulada «forceUnlock»Descripción:
| Método | Valores de retorno | Descripción |
|---|---|---|
| forceUnlock(String token, String docId) | LockInfo | Desbloquea un documento bloqueado. |
- Este método permite desbloquear cualquier documento bloqueado.
- No es obligatorio ejecutar esta acción como el mismo usuario que ejecutó previamente la acción de bloqueo (checkout).
Ejemplo:
package com.openkm;
import com.openkm.api.OKMDocument;import com.openkm.util.ContextWrapper;
public class Test {
public static void main(String[] args) { try { OKMDocument okmDocument = ContextWrapper.getContext().getBean(OKMDocument.class); okmDocument.forceUnlock(null, "f3a977f7-abfc-4f58-a033-988903b31473"); } catch (Exception e) { e.printStackTrace(); } }}isLocked
Sección titulada «isLocked»Descripción:
| Método | Valores de retorno | Descripción |
|---|---|---|
| isLocked(String token, String docId) | boolean | Devuelve un booleano que indica si el documento está bloqueado o no. |
Ejemplo:
package com.openkm;
import com.openkm.api.OKMDocument;import com.openkm.util.ContextWrapper;
public class Test {
public static void main(String[] args) { try { OKMDocument okmDocument = ContextWrapper.getContext().getBean(OKMDocument.class); System.out.println(okmDocument.isLocked(null, "f3a977f7-abfc-4f58-a033-988903b31473")); } catch (Exception e) { e.printStackTrace(); } }}getLockInfo
Sección titulada «getLockInfo»Descripción:
| Método | Valores de retorno | Descripción |
|---|---|---|
| getLockInfo(String token, String docId) | LockInfo | Devuelve un objeto con la información del bloqueo. |
Ejemplo:
package com.openkm;
import com.openkm.api.OKMDocument;import com.openkm.bean.LockInfo;import com.openkm.util.ContextWrapper;
public class Test {
public static void main(String[] args) { try { OKMDocument okmDocument = ContextWrapper.getContext().getBean(OKMDocument.class); LockInfo lockInfo = okmDocument.getLockInfo(null, "f3a977f7-abfc-4f58-a033-988903b31473"); System.out.println(lockInfo); } catch (Exception e) { e.printStackTrace(); } }}Descripción:
| Método | Valores de retorno | Descripción |
|---|---|---|
| purge(String token, String docId) | void | El documento se elimina permanentemente del repositorio. |
- Normalmente se purgan documentos hacia /okm:trash/userId —la papelera personal del usuario—, pero es posible purgar directamente cualquier documento de todo el repositorio.
Ejemplo:
package com.openkm;
import com.openkm.api.OKMDocument;import com.openkm.util.ContextWrapper;
public class Test {
public static void main(String[] args) { try { OKMDocument okmDocument = ContextWrapper.getContext().getBean(OKMDocument.class); okmDocument.purge(null, "f3a977f7-abfc-4f58-a033-988903b31473"); } catch (Exception e) { e.printStackTrace(); } }}Descripción:
| Método | Valores de retorno | Descripción |
|---|---|---|
| move(String token, String docId, String dstId) | void | Mueve un documento a una carpeta o expediente (record). |
Ejemplo:
package com.openkm;
import com.openkm.api.OKMDocument;import com.openkm.util.ContextWrapper;
public class Test {
public static void main(String[] args) { try { OKMDocument okmDocument = ContextWrapper.getContext().getBean(OKMDocument.class); okmDocument.move(null, "f3a977f7-abfc-4f58-a033-988903b31473", "b67fe3ae-bcca-4947-b8ea-0cc7aedd4474"); } catch (Exception e) { e.printStackTrace(); } }}Descripción:
| Método | Valores de retorno | Descripción |
|---|---|---|
| copy(String token, String docId, String dstId) | Document | Copia un documento a una carpeta o expediente (record). |
- Los valores del parámetro dstId deben ser un UUID de carpeta o expediente (record).
Ejemplo:
package com.openkm;
import com.openkm.api.OKMDocument;import com.openkm.util.ContextWrapper;
public class Test {
public static void main(String[] args) { try { OKMDocument okmDocument = ContextWrapper.getContext().getBean(OKMDocument.class); okmDocument.copy(null, "f3a977f7-abfc-4f58-a033-988903b31473", "b67fe3ae-bcca-4947-b8ea-0cc7aedd4474"); } catch (Exception e) { e.printStackTrace(); } }}Descripción:
| Método | Valores de retorno | Descripción |
|---|---|---|
| copy(String token, String docId, String dstId, String newName) | Document | Copia un documento a alguna carpeta o expediente (record). |
- Los valores del parámetro dstId deben ser un UUID de carpeta o expediente (record).
- Cuando el parámetro newName es null, el documento conservará el mismo nombre.
Ejemplo:
package com.openkm;
import com.openkm.api.OKMDocument;import com.openkm.util.ContextWrapper;
public class Test {
public static void main(String[] args) { try { OKMDocument okmDocument = ContextWrapper.getContext().getBean(OKMDocument.class); okmDocument.copy(null, "f3a977f7-abfc-4f58-a033-988903b31473", "b67fe3ae-bcca-4947-b8ea-0cc7aedd4474", "samples_renamed.pdf"); } catch (Exception e) { e.printStackTrace(); } }}extendedCopy
Sección titulada «extendedCopy»Descripción:
| Método | Valores de retorno | Descripción |
|---|---|---|
| extendedCopy(String token, String docId, String dstId, String docName, ExtendedAttributes extAttr) | Document | Copia un documento con datos asociados a alguna carpeta o expediente (record). |
- Los valores del parámetro dstId deben ser un UUID de carpeta o de expediente (record).
- Cuando el valor del parámetro docName es null, el documento conservará el mismo nombre.
Ejemplo:
package com.openkm;
import com.openkm.api.OKMDocument;import com.openkm.bean.ExtendedAttributes;import com.openkm.util.ContextWrapper;
public class Test {
public static void main(String[] args) { try { OKMDocument okmDocument = ContextWrapper.getContext().getBean(OKMDocument.class); ExtendedAttributes extAttr = new ExtendedAttributes(); // copy keywords extAttr.setKeywords(true); extAttr.setCategories(true); extAttr.setNotes(true); extAttr.setPropertyGroups(true);
okmDocument.extendedCopy(null, "f3a977f7-abfc-4f58-a033-988903b31473", "b67fe3ae-bcca-4947-b8ea-0cc7aedd4474", "samples_renamed.pdf", extAttr); } catch (Exception e) { e.printStackTrace(); } }}getVersionHistorySize
Sección titulada «getVersionHistorySize»Descripción:
| Método | Valores de retorno | Descripción |
|---|---|---|
| getVersionHistorySize(String token, String docId) | long | Devuelve la suma en bytes de todos los documentos en el historial del documento. |
Ejemplo:
package com.openkm;
import com.openkm.api.OKMDocument;import com.openkm.util.ContextWrapper;import com.openkm.util.FormatUtil;
public class Test {
public static void main(String[] args) { try { OKMDocument okmDocument = ContextWrapper.getContext().getBean(OKMDocument.class); System.out.println(FormatUtil.formatSize(okmDocument.getVersionHistorySize(null, "f3a977f7-abfc-4f58-a033-988903b31473"))); } catch (Exception e) { e.printStackTrace(); } }}isValid
Sección titulada «isValid»Descripción:
| Método | Valores de retorno | Descripción |
|---|---|---|
| isValid(String token, String docId) | boolean | Devuelve un booleano que indica si el nodo es un documento o no. |
Ejemplo:
package com.openkm;
import com.openkm.api.OKMDocument;import com.openkm.util.ContextWrapper;
public class Test {
public static void main(String[] args) { try { OKMDocument okmDocument = ContextWrapper.getContext().getBean(OKMDocument.class); boolean valid = okmDocument.isValid(null, "f3a977f7-abfc-4f58-a033-988903b31473"); System.out.println(valid); } catch (Exception e) { e.printStackTrace(); } }}getPath
Sección titulada «getPath»Descripción:
| Método | Valores de retorno | Descripción |
|---|---|---|
| getPath(String token, String uuid) | String | Convierte un UUID de documento en una ruta de documento. |
Ejemplo:
package com.openkm;
import com.openkm.api.OKMDocument;import com.openkm.util.ContextWrapper;
public class Test {
public static void main(String[] args) { try { OKMDocument okmDocument = ContextWrapper.getContext().getBean(OKMDocument.class); String docPath = okmDocument.getPath(null, "f3a977f7-abfc-4f58-a033-988903b31473"); System.out.println(docPath); } catch (Exception e) { e.printStackTrace(); } }}getDetectedLanguages
Sección titulada «getDetectedLanguages»Descripción:
| Método | Valores de retorno | Descripción |
|---|---|---|
| getDetectedLanguages(String token) | List |
Devuelve una lista de los idiomas de documento disponibles que OpenKM puede identificar. |
Ejemplo:
package com.openkm;
import com.openkm.api.OKMDocument;import com.openkm.util.ContextWrapper;
public class Test {
public static void main(String[] args) { try { OKMDocument okmDocument = ContextWrapper.getContext().getBean(OKMDocument.class); for (String languages : okmDocument.getDetectedLanguages(null)) { System.out.println(languages); } } catch (Exception e) { e.printStackTrace(); } }}createFromTemplate
Sección titulada «createFromTemplate»Descripción:
| Método | Valores de retorno | Descripción |
|---|---|---|
| createFromTemplate(String token, String docId, String dstPath, Map<String, String> properties, ExtendedAttributes attributes) | Document | Crea un nuevo documento a partir de una plantilla y devuelve un objeto Document. |
- El dstPath puede ser un UUID de carpeta o de expediente (record).
- El parámetro language es opcional.
- Cuando la plantilla usa grupos de metadatos para rellenar campos, esos valores son obligatorios y deben establecerse en el parámetro properties.
Ejemplo:
package com.openkm;
import java.util.ArrayList;import java.util.Calendar;import java.util.HashMap;import java.util.Map;import java.util.List;
import com.google.gson.Gson;import com.openkm.api.OKMDocument;import com.openkm.bean.ExtendedAttributes;import com.openkm.util.ContextWrapper;import com.openkm.util.ISO8601;
public class Test {
public static void main(String[] args) { try { OKMDocument okmDocument = ContextWrapper.getContext().getBean(OKMDocument.class); Map<String, String> properties = new HashMap<>(); properties.put("okp:tpl.name", "Some name"); Calendar cal = Calendar.getInstance(); // Value must be converted to String ISO 8601 compliant properties.put("okp:tpl.bird_date", ISO8601.formatBasic(cal));
List<String> list = new ArrayList<>(); list.add("java"); properties.put("okp:tpl.language", new Gson().toJson(list).toString());
okmDocument.createFromTemplate(null, "86633fe8-1b0d-48ac-a716-7685022adad8", "/okm:root/templates.pdf", properties, new ExtendedAttributes()); } catch (Exception e) { e.printStackTrace(); } }}updateFromTemplate
Sección titulada «updateFromTemplate»Descripción:
| Método | Valores de retorno | Descripción |
|---|---|---|
| updateFromTemplate(String token, String docId, String dstId, Map<String, String> properties) | void | Actualiza un documento creado previamente a partir de la plantilla. |
- Este método solo tiene sentido cuando la plantilla usa grupos de metadatos para rellenar campos.
Ejemplo:
package com.openkm;
import java.util.ArrayList;import java.util.Calendar;import java.util.HashMap;import java.util.List;import java.util.Map;
import com.google.gson.Gson;import com.openkm.api.OKMDocument;import com.openkm.util.ContextWrapper;import com.openkm.util.ISO8601;
public class Test {
public static void main(String[] args) { try { OKMDocument okmDocument = ContextWrapper.getContext().getBean(OKMDocument.class); Map<String, String> properties = new HashMap<>(); properties.put("okp:tpl.name", "Some name"); Calendar cal = Calendar.getInstance(); // Value must be converted to String ISO 8601 compliant properties.put("okp:tpl.bird_date", ISO8601.formatBasic(cal));
List<String> list = new ArrayList<>(); list.add("java"); properties.put("okp:tpl.language", new Gson().toJson(list).toString());
okmDocument.updateFromTemplate(null, "86633fe8-1b0d-48ac-a716-7685022adad8", "b67fe3ae-bcca-4947-b8ea-0cc7aedd4474", properties); } catch (Exception e) { e.printStackTrace(); } }}setAnnotations
Sección titulada «setAnnotations»Descripción:
| Método | Valores de retorno | Descripción |
|---|---|---|
| setAnnotations(String token, String docId, String verName, String annotation) | void | Establece anotaciones para una versión del documento. |
Ejemplo:
package com.openkm;import com.openkm.api.OKMDocument;import com.openkm.util.ContextWrapper;
public class Test {
public static void main(String[] args) { try { OKMDocument okmDocument = ContextWrapper.getContext().getBean(OKMDocument.class); okmDocument.setAnnotations(null, "3887ae75-dd67-4019-b4d1-2f6962815403", "1.1", "The annotation text."); } catch (Exception e) { e.printStackTrace(); } }}getAnnotations
Sección titulada «getAnnotations»Descripción:
| Método | Valores de retorno | Descripción |
|---|---|---|
| getAnnotations(String token, String docId, String verName) | String | Devuelve las anotaciones del documento para una versión concreta. |
Ejemplo:
package com.openkm;
import com.openkm.api.OKMDocument;import com.openkm.util.ContextWrapper;
public class Test {
public static void main(String[] args) { try { OKMDocument okmDocument = ContextWrapper.getContext().getBean(OKMDocument.class); String annotation = okmDocument.getAnnotations(null, "3887ae75-dd67-4019-b4d1-2f6962815403", "1.1"); System.out.println(annotation); } catch (Exception e) { e.printStackTrace(); } }}getCheckedOut
Sección titulada «getCheckedOut»Descripción:
| Método | Valores de retorno | Descripción |
|---|---|---|
| getCheckedOut(String token) | List |
Devuelve la lista de todos los documentos en edición (checked-out) en el repositorio. |
Ejemplo:
package com.openkm;
import com.openkm.api.OKMDocument;import com.openkm.bean.Document;import com.openkm.util.ContextWrapper;
public class Test {
public static void main(String[] args) { try { OKMDocument okmDocument = ContextWrapper.getContext().getBean(OKMDocument.class); for (Document doc : okmDocument.getCheckedOut(null)) { System.out.println(doc); } } catch (Exception e) { e.printStackTrace(); } }}Descripción:
| Método | Valores de retorno | Descripción |
|---|---|---|
| stamp(String token, String docId, int type, long stId) | void | Estampa un documento. |
- El parámetro type indica el tipo de sello:
- El parámetro stId es el identificador único de la definición del sello. Puede obtenerlo en Administration > vista Stamp.
Ejemplo:
package com.openkm;
import com.openkm.api.OKMDocument;import com.openkm.util.ContextWrapper;
public class Test {
public static void main(String[] args) { try { OKMDocument okmDocument = ContextWrapper.getContext().getBean(OKMDocument.class); int type = 0; // indicate text stamp definition long stId = 1; // unique identifier of the stamp definition okmDocument.stamp(null, "3887ae75-dd67-4019-b4d1-2f6962815403", type, stId); } catch (Exception e) { e.printStackTrace(); } }}stampText
Sección titulada «stampText»Descripción:
| Método | Valores de retorno | Descripción |
|---|---|---|
| stampText(String token, String docId, long stId, String range, String exprX, String exprY, String text) | void | Estampa un documento con texto personalizado. |
En los campos Expr. X y Expr. Y puede introducir algo más que un número simple. Actualmente están definidas las siguientes macros:
- IMAGE_WIDTH
- IMAGE_HEIGHT
- PAGE_WIDTH
- PAGE_HEIGHT
- PAGE_CENTER
- PAGE_MIDDLE
Para centrar un sello en la página, puede usar:
| Expr. X | PAGE_CENTER |
| Expr. Y | PAGE_MIDDLE |
| ::: |
Ejemplo:
package com.openkm;
import com.openkm.api.OKMDocument;import com.openkm.util.ContextWrapper;
import java.io.FileInputStream;import java.io.InputStream;import org.apache.commons.io.IOUtils;
public class Test {
public static void main(String[] args) { try { long id = 1; String exprX = "PAGE_CENTER - IMAGE_WIDTH / 2"; String exprY = "PAGE_MIDDLE - IMAGE_HEIGHT / 2"; InputStream is = new FileInputStream("/home/gnujavasergio/okm/logo.png"); byte[] image = IOUtils.toByteArray(is); OKMDocument okmDocument = ContextWrapper.getContext().getBean(OKMDocument.class); okmDocument.stampImage(null, "055b5206-35d0-4351-ba92-c304bbba7ddf", id, "", exprX, exprY, image); } catch (Exception e) { e.printStackTrace(); } }}setDescription
Sección titulada «setDescription»Descripción:
| Método | Valores de retorno | Descripción |
|---|---|---|
| setDescription(String token, String docId, String description) | void | Establece una descripción. |
Ejemplo:
package com.openkm;
import com.openkm.api.OKMDocument;import com.openkm.util.ContextWrapper;
public class Test {
public static void main(String[] args) { try { OKMDocument okmDocument = ContextWrapper.getContext().getBean(OKMDocument.class); okmDocument.setDescription(null, "7ce1b4a8-4ade-4dce-8d7d-4e99a6cd368b", "some description"); } catch (Exception e) { e.printStackTrace(); } }}setNodeClass
Sección titulada «setNodeClass»Descripción:
| Método | Valores de retorno | Descripción |
|---|---|---|
| setNodeClass(String token, String docId, long ncId) | void | Establece el NodeClass. |
Ejemplo:
package com.openkm;
import com.openkm.api.OKMDocument;import com.openkm.util.ContextWrapper;
public class Test {
public static void main(String[] args) { try { OKMDocument okmDocument = ContextWrapper.getContext().getBean(OKMDocument.class); long ncId = 2; okmDocument.setNodeClass(null, "7ce1b4a8-4ade-4dce-8d7d-4e99a6cd368b", ncId); } catch (Exception e) { e.printStackTrace(); } }}setDispositionStage
Sección titulada «setDispositionStage»Descripción:
| Método | Valores de retorno | Descripción |
|---|---|---|
| setDispositionStage(String token, String docId, long stage) | void | Establece la etapa de disposición |
Ejemplo:
package com.openkm;
import com.openkm.api.OKMDocument;import com.openkm.util.ContextWrapper;
public class Test {
public static void main(String[] args) { try { OKMDocument okmDocument = ContextWrapper.getContext().getBean(OKMDocument.class); long stage = 1; okmDocument.setDispositionStage(null, "7ce1b4a8-4ade-4dce-8d7d-4e99a6cd368b", stage); } catch (Exception e) { e.printStackTrace(); } }}createWizard
Sección titulada «createWizard»Descripción:
| Método | Valores de retorno | Descripción |
|---|---|---|
| createWizard(String token, String docPath, long nodeClass, InputStream is) | WizardNode | Crea un nuevo documento con un asistente (wizard). |
El WizardNode contiene una lista de acciones pendientes que deben realizarse para completar el proceso de creación del documento. Estas pueden ser:
- Añadir palabra clave
- Añadir categorías
- Añadir metadatos
- El parámetro docPath debe ser una RUTA válida de carpeta o expediente (record).
Ejemplo:
package com.openkm;
import java.io.FileInputStream;import java.io.InputStream;
import org.apache.commons.io.IOUtils;
import com.openkm.api.OKMDocument;import com.openkm.bean.WizardNode;import com.openkm.util.ContextWrapper;
public class Test {
public static void main(String[] args) { try { OKMDocument okmDocument = ContextWrapper.getContext().getBean(OKMDocument.class); InputStream is = new FileInputStream("/home/gnujavasergio/okm/logo.png"); WizardNode wn = okmDocument.createWizard(null, "/okm:root/test/logo.png", 0, is); System.out.print(wn); IOUtils.closeQuietly(is); } catch (Exception e) { e.printStackTrace(); } }}getNumberOfPages
Sección titulada «getNumberOfPages»Descripción:
| Método | Valores de retorno | Descripción |
|---|---|---|
| getNumberOfPages(String token, String uuid) | int | Obtiene el número de páginas de un documento. |
Ejemplo:
package com.openkm;
import com.openkm.api.OKMDocument;import com.openkm.util.ContextWrapper;
public class Test {
public static void main(String[] args) { try { OKMDocument okmDocument = ContextWrapper.getContext().getBean(OKMDocument.class); System.out.println("The number of pages is : " + okmDocument.getNumberOfPages(null, "b2f88679-e3fd-4f97-bf0e-abf76f9ec499")); } catch (Exception e) { e.printStackTrace(); } }}getPageAsImage
Sección titulada «getPageAsImage»Descripción:
| Método | Valores de retorno | Descripción |
|---|---|---|
| getPageAsImage(String token, String uuid, int pageNumber, int maxWidth, int maxHeight) | String | Devuelve una página concreta como imagen codificada en Base64. |
Ejemplo:
package com.openkm;
import com.openkm.api.OKMDocument;import com.openkm.util.ContextWrapper;
public class Test {
public static void main(String[] args) { try { OKMDocument okmDocument = ContextWrapper.getContext().getBean(OKMDocument.class); System.out.println(okmDocument.getPageAsImage(null, "3fe350e2-69e8-4681-a97c-6ac4ba6c1524", 1, 150, 150)); } catch (Exception e) { e.printStackTrace(); } }}isConvertibleToPDF
Sección titulada «isConvertibleToPDF»Descripción:
| Método | Valores de retorno | Descripción |
|---|---|---|
| isConvertibleToPdf(String token, String docId) | boolean | Devuelve un booleano que indica si el nodo se puede convertir a PDF. |
En el caso de un nodo de tipo archivo PDF, se devolverá el valor false.
Ejemplo:
package com.openkm;
import com.openkm.api.OKMDocument;import com.openkm.util.ContextWrapper;
public class Test {
public static void main(String[] args) { try { OKMDocument okmDocument = ContextWrapper.getContext().getBean(OKMDocument.class); System.out.println(okmDocument.isConvertibleToPdf(null, "9ed5c7b1-9314-4479-8f80-fd8e2b47f55e")); } catch (Exception e) { e.printStackTrace(); } }}setIndexable
Sección titulada «setIndexable»Descripción:
| Método | Valores de retorno | Descripción |
|---|---|---|
| setIndexable(String token, String uuid, boolean enabled) | void | Establece si el documento es indexable. |
Ejemplo:
package com.openkm;
import com.openkm.api.OKMDocument;import com.openkm.bean.Document;import com.openkm.util.ContextWrapper;
public class Test {
public static void main(String[] args) { try { OKMDocument okmDocument = ContextWrapper.getContext().getBean(OKMDocument.class); okmDocument.setIndexable(null, "19938640-fd34-421c-90c8-6b435e4b7d79", true); Document document = okmDocument.getProperties(null, "19938640-fd34-421c-90c8-6b435e4b7d79"); System.out.println("Document indexable:" + document.isIndexable()); } catch (Exception e) { e.printStackTrace(); } }}mergePdf
Sección titulada «mergePdf»Descripción:
| Método | Valores de retorno | Descripción |
|---|---|---|
| mergePdf(String token, String destinationPath, String docName, List |
void | Combina dos o más archivos PDF. |
- El parámetro destinationPath debe ser una RUTA válida de carpeta o expediente (record).
Ejemplo:
package com.openkm;
import java.util.ArrayList;import java.util.List;
import com.openkm.api.OKMDocument;import com.openkm.util.ContextWrapper;
public class Test {
public static void main(String[] args) { try { OKMDocument okmDocument = ContextWrapper.getContext().getBean(OKMDocument.class); List<String> uuids = new ArrayList<>(); uuids.add("/okm:root/test/document.pdf"); uuids.add("/okm:root/test/document1.pdf"); String fldUuid = "/okm:root/mergue"; okmDocument.mergePdf(null, fldUuid, "MergePdf.pdf", uuids); } catch (Exception e) { e.printStackTrace(); } }}