Te aconsejamos utilizar el createSimple.
Me imagino que ya has revisado la documentacion del javadoc de aqui
https://docs.openkm.com/apidoc/ y en concreto la clase OKMDocument.
Code: Select allpublic Document createSimple(String token, String docPath, InputStream is)
Esto seria algo así:
Code: Select allOKMDocument.getInstance(null, "/okm:root/fld/destino.txt",is);
IOUtils.closeQuietly(is);
No estoy seguro si al ejecutar la transacción ( porque esto lo estas haciendo en una transaccion verdad ? ) en el contexto del workflow se esta utilizando la session del usuario o no. En caso negativo ( podría ser perfectamente ), entonces necesitarias hacer este cambio:
Code: Select allString systemToken = DbSessionManager.getInstance().getSystemToken();
OKMDocument.getInstance(systemToken, "/okm:root/fld/destino.txt",is);
IOUtils.closeQuietly(is);
Aqui dejamos como ejercicio que el InputStream apunte al fichero local que has creado.
El tema esta en que una vez has realizado el click en el formulario -> has completado la tarea, internamente el workflow dispara la transacción hacia la siguiente tarea. Me suena que esta transacción puede no estar enlazada con la sesion del usuario que ha realizado la tarea, sino con una sesion anónima del propio workflow, por lo que las operaciones que se hacen del lado del workflow deben estar autentificadas con un token de usuario autentificado ( en este caso el token del super usuario de sistema ).