I have created a Process for Alfresco Process Service and now I want to trigger it from Alfresco Content Service when, an E-mail comes to Alfresco Content Service, how it's possible?
When an email arrives at ACS (i.e. "is filed as a document") you can have a custom behaviour (which you implemented using Java APIs) fire and call APS via its REST API to trigger your custom process.
Thank you for the reply!.
can you please tell me which behavior I supposed to use in my case?
onCreateNode sounds about right when you want to start it as soon as the document / email has been filed.
Thank you!!
but while getting Process definition from activiti webscript by the following call:
GET /alfresco/service/activiti/server/{token1}
It shows:
What is token1 here?
I don't really understand why you would be calling that webscript... That webscript is a backend for APS to call, and I thought you wanted to trigger an APS process from ACS, so you'd have to do call in the exact opposite direction. Also, that webscript is likely part of the Enterprise-only ACS / APS connector used for some internal handling, and as such is not supposed to be called from custom code (I mean, the response message states it hasn't been whitelisted).
For calling APS from ACS, take a look at the Alfresco Process Services ReST API documentation.
Thank you!
Now I am using already defined method from com.activiti.alfresco.service.ActivitiService Interface which is :
"public void startProcessById(String processId, String processName, Map<String, Object> formValues, ActivitiService.DocumentContext documentContext)"
but I have no idea about "ActivitiService.DocumentContext documentContext" Parameter and how to pass "formValues" parameter as
Map<String, Object> in startProcessById() method ?
Could you please guide me, how to use those Parameters in my custom Behaviour?
Hi,
I have written following code to trigger the process, Please have a look!
private Behaviour onCreateNode;
public void init() {
this.onCreateNode = new JavaBehaviour(this, "onCreateNode", NotificationFrequency.TRANSACTION_COMMIT);
this.policyComponent.bindClassBehaviour(QName.createQName(NamespaceService.ALFRESCO_URI, "onCreateNode"), ContentModel.TYPE_CONTENT, this.onCreateNode);
}
public void onCreateNode(ChildAssociationRef childasso) {
NodeRef node=childasso.getChildRef();
DocumentContext documentContext= new DocumentContext(node,"formFieldId");
Map<String, Object> formValues = new HashMap<String, Object>();
formValues.put(key,value);
try {
public void startProcessById(String processId, String processName, Map<String, Object> formValues, ActivitiService.DocumentContext documentContext)
} catch (RemoteActivitiException | ActivitiAuthenticationException e) {
e.printStackTrace();
}
but while executing it in Maven it shows me that: Package does not exist but I have uploaded the Package.
Thank you!
Can you please provide the full class code as an attachment or in a syntax highlighter? The piece of code you provided does not make much sense - you have a method declaration inside the try-catch block, which would not compile at all.
not able to attach, there is no option for attaching document so providing only startProcessId() code from RemoteActivitiService class that belongs to com.activiti.alfresco.service package.
public void startProcessById(String processId, String processName, Map<String, Object> formValues, ActivitiService.DocumentContext documentContext)
throws RemoteActivitiException, ActivitiAuthenticationException
{
JSONObject startProcessVars = new JSONObject();
try
{
if (formValues != null) {
for (Map.Entry<String, Object> formValue : formValues.entrySet()) {
if ((formValue.getValue() instanceof ActivitiService.JsonSerializable)) {
startProcessVars.put((String)formValue.getKey(), ((ActivitiService.JsonSerializable)formValue.getValue()).toJSON());
} else {
startProcessVars.put((String)formValue.getKey(), formValue.getValue());
}
}
}
if (documentContext != null)
{
NodeRef nodeRef = documentContext.getNodeRef();
FileInfo fileInfo = this.fileFolderService.getFileInfo(nodeRef);
if ((!fileInfo.isFolder()) && (!fileInfo.isLink()))
{
SiteInfo siteInfo = this.siteService.getSite(nodeRef);
String sourceId = nodeRef.getId() + (siteInfo != null ? "@" + siteInfo.getShortName() : "");
JSONObject body = new JSONObject();
body.put("source", this.activitiParameters.getAlfrescoRepositoryName());
body.put("sourceId", sourceId);
body.put("name", fileInfo.getName());
body.put("mimeType", JSONObject.NULL);
body.put("simpleType", JSONObject.NULL);
body.put("link", false);
JSONObject contentObject = doJsonPost("app/rest/content", body);
int contentId = contentObject.getInt("id");
startProcessVars.put(documentContext.getFormFieldId(), String.valueOf(contentId));
}
}
startProcessInternal(processId, processName, startProcessVars);
}
catch (JSONException e)
{
e.printStackTrace();
}
}
Ask for and offer help to other Alfresco Content Services Users and members of the Alfresco team.
Related links:
By using this site, you are agreeing to allow us to collect and use cookies as outlined in Alfresco’s Cookie Statement and Terms of Use (and you have a legitimate interest in Alfresco and our products, authorizing us to contact you in such methods). If you are not ok with these terms, please do not use this website.