cancel
Showing results for 
Search instead for 
Did you mean: 

Automation Chain + setproperty + NOT mandatory Blob : Set Document BLOB properties with workflow var but got null problem

milonette_
Star Collaborator
Star Collaborator

Hello,

I want to set a Document var of type blob with a workflow var, in an automation chain, after selection of this var in a workflow form.

This workflow var is not mandatory and that is the problem.

  1. If I try "Update Property" but got an object is null exception and nuxeo was in a right mess.

  2. I try to set this variable with a condition like setting workflow var, But nuxeo tells me that the update properties only allow "scalar"...

    @{WorkflowVariables["wkToto"] != null?WorkflowVariables["wkToto"]:""}

  3. So I try "run script" but I couldn't get the "current document"... 😞

    if (WorkflowVariables["wkToto"] != null){ Document.doc.setPropertyValue("amoi:toto",WorkflowVariables["wkToto"]) ; }

Do you know how to SET a document BLOB even if it's NULL with workflow var ?

thanks

6 REPLIES 6

milonette_
Star Collaborator
Star Collaborator

Hello Me,

I don't know why the basic "update property" don't work with blob...

Nevertheless, this is the answer:

Automation Chain:

  • Document is in input.

  • Do A Run Script

    if (WorkflowVariables["varamoiwk"] != null){ Document.doc.setPropertyValue("monxpath:mavalaupdate",WorkflowVariables["varamoiwk"]) ; }

  • Do A "Document Save" (This was missing 😉 )

This is an exemple of an other Run Script: http://doc.nuxeo.com/pages/viewpage.action?pageId=2392665

geekonspace
Star Contributor
Star Contributor

I did a custom operation save blob from workflow to document attached to workflow in my nuxeo ide and sent it to studio

@Operation(id=SaveBlobToInputDocument.ID, category=Constants.CAT_SERVICES, label="SaveBlobToInputDocument", description="Guarda blob en el inputdocument. Usar esta cadena solo en documentos con workflows activos")
public class SaveBlobToInputDocument {

    public static final String ID = "SaveBlobToInputDocument";
	private static final Log log = LogFactory.getLog(SaveBlobToInputDocument.class);
    @Context
	protected CoreSession session;


	@Param(name = "workflow_var", required = true)
	protected String workflowVar;

	@Param(name = "type_document", required = true)
	protected String typeDocument;
	
	@Param(name = "title_document", required = false)
	protected String titleDocument;	
	
    @Context
    protected OperationContext ctx;	

	@OperationMethod(collector = DocumentModelCollector.class)	
    public DocumentModel run(DocumentModel input) throws ClientException  {
    	if(workflowVar != null && !workflowVar.trim().equals("")&& typeDocument!= null && !typeDocument.trim().equals("")){
    		@SuppressWarnings("unchecked")
			Object obj =((Map<String, Serializable>)ctx.get(Constants.VAR_WORKFLOW)).get(workflowVar);          	          	
          	if (obj != null && obj instanceof Blob){	              	
          		Blob blob= (Blob) obj;
	          	DocumentModel blobDocument = session.createDocumentModel(typeDocument);
	        	blobDocument.setPropertyValue(Constantes.XPATH_FILECONTENT,(Serializable) blob);
	        	blobDocument.setPropertyValue(Constantes.XPATH_FILENAME,(Serializable)FileUtils.getCleanFileName(blob.getFilename()));
	        	if(titleDocument != null && !titleDocument.equals("")){
	        		blobDocument.setPropertyValue(Constantes.XPATH_TITLE, titleDocument);	
	        	}	        	
	        	try {
	    			blobDocument.setPathInfo(input.getPathAsString(),Framework.getService(PathSegmentService.class).generatePathSegment(blobDocument));
	    			session.createDocument(blobDocument);    		
	    		} catch (Exception e) {
    				throw new RuntimeException("Runtime: "+e);
	    		}
          	}
		}
    	else
    	{
    		log.warn("workflowVar o typeDocument estan vacios o nulos SaveBlobToInputDocument");
    	}
    	return input;
    }    
}

thanks, that's great!

Think to check the answers that what useful for you

I also would like to know when my answer has errors or if there is a better way to do that. Thanks. I only want to help

please create a new question for a new question.

Getting started

Attention: Blogs & Forums are in READ-ONLY mode from Oct 9-19 as we transition to our new platform. Learn more.

Find what you came for

We want to make your experience in Hyland Connect as valuable as possible, so we put together some helpful links.