03-26-2018 02:23 AM
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?
03-26-2018 03:44 AM
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.
03-26-2018 04:14 AM
Thank you for the reply!.
can you please tell me which behavior I supposed to use in my case?
03-26-2018 04:34 AM
onCreateNode sounds about right when you want to start it as soon as the document / email has been filed.
03-27-2018 06:29 AM
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?
03-27-2018 04:26 PM
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.
03-28-2018 11:50 AM
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?
03-29-2018 07:42 AM
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!
03-30-2018 09:40 AM
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.
03-30-2018 10:31 AM
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();
}
}
Explore our Alfresco products with the links below. Use labels to filter content by product module.