cancel
Showing results for 
Search instead for 
Did you mean: 

Automation chain with parametrized Query

elteo_
Champ on-the-rise
Champ on-the-rise

Hi, I'm inside an automation chain and I need to get the current user's private workspace. The trouble is that user names are in the form: [email protected], and the private workspace is named like 'username-domain-com'. How can I write a query replacing both "@" and "." from the current user's name with "-"?

SELECT * FROM Document WHERE ecm:path='/default-domain/UserWorkspaces/@{CurrentUser.name}'

is evaluated as

SELECT * FROM Document WHERE ecm:path='/default-domain/UserWorkspaces/[email protected]'

but I need it to come out as

SELECT * FROM Document WHERE ecm:path='/default-domain/UserWorkspaces/myUser-domain-com'
1 ACCEPTED ANSWER

Benjamin_Jalon1
Elite Collaborator
Elite Collaborator

if you really need this feature on your old version of Nuxeo, and if you have little development skills you can:

  • create a nuxeo plugin with Nuxeo IDE, it's really easy.

  • Create a new operation given a void as input and Document as output

  • declare a variable that will receive the username

     @Param(name = "username", widget = Constants.W_TEXT)
     protected String username;
    
  • And in your operation method, just get the userworkspace service

               UserWorkspaceService uws = Framework.getLocalService(UserWorkspaceService.class);
    
  • I let you check how to get the workspace from it 🙂

Hope will help you

View answer in original post

3 REPLIES 3

Florent_Guillau
World-Class Innovator
World-Class Innovator

FYI in the next version ofNuxeo (5.4.3 or whatever it's named) a UserWorkspace.Get operation has been added that will help you once you upgrade (cf NXP-7638).

Benjamin_Jalon1
Elite Collaborator
Elite Collaborator

if you really need this feature on your old version of Nuxeo, and if you have little development skills you can:

  • create a nuxeo plugin with Nuxeo IDE, it's really easy.

  • Create a new operation given a void as input and Document as output

  • declare a variable that will receive the username

     @Param(name = "username", widget = Constants.W_TEXT)
     protected String username;
    
  • And in your operation method, just get the userworkspace service

               UserWorkspaceService uws = Framework.getLocalService(UserWorkspaceService.class);
    
  • I let you check how to get the workspace from it 🙂

Hope will help you

Alain_ESCAFFRE
Star Contributor
Star Contributor

Other solution: you can use a "Run Script" operation before and produce your string using some MVEL expressions, mostly the String API (the same you have on java :http://docs.oracle.com/javase/6/docs/api/java/lang/String.html). You can use replace, match, .... and work on your string.

An exemple of script put in a Run Script (that doesn't do what you aim at though, just an exemple):

org.nuxeo.ecm.core.api.Blob myBlob=Document.getProperty("file:content"); Context["extension"]="none"; Context["filename"] = myBlob.getFilename(); String[] splitedFilename=Context["filename"].split("\."); Context["extension"]="none";if (splitedFilename.length>=2){Context["extension"]=splitedFilename[splitedFilename.length-1]};

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.