02-16-2009 02:59 AM
05-27-2011 02:56 AM
Yes you can do this.I know that your post is old, but my problems are new.
The process is roughly, create a package, set up your properties, get the workflow, start a new instance of the workflow.
Here's a snippet of some java code I am working on at the moment that kicks off a new workflow and runs the start task.
…
// create workflow package out of package items
NodeRef packageNodeRef = WorkflowHelper.createWorkflowPackage(packageItemList);
Map<QName, Serializable> parameters = new HashMap<QName, Serializable>();
parameters.put(WorkflowModel.ASSOC_PACKAGE, packageNodeRef);
parameters.put(WorkflowModel.PROP_DESCRIPTION, taskComment);
parameters.put(WorkflowModel.PROP_WORKFLOW_DESCRIPTION, taskComment);
parameters.put(ContentModel.PROP_OWNER, initiatorUsername);
// if it is workflow with one assignee
if(workflow41AssigneeFlag) {
logger.debug("Workflow with one assignee.");
NodeRef nrAssignee = AlfrescoServices.getPersonService().getPerson(assigneeUsernameList.get(0));
parameters.put(WorkflowModel.ASSOC_ASSIGNEE, nrAssignee);
} else {
logger.debug("Workflow with multiple assignees.");
// if it is workflow with multiple assignees
ArrayList<NodeRef> assignees = new ArrayList<NodeRef>();
for(String assigneeUsername : assigneeUsernameList) {
NodeRef nrAssignee = AlfrescoServices.getPersonService().getPerson(assigneeUsername);
if(nrAssignee != null) {
assignees.add(nrAssignee);
}
}
parameters.put(QName.createQName(BPM_ASSIGNEES_QNAME), assignees);
}
// task start date
parameters.put(WorkflowModel.PROP_START_DATE, new Date());
// task and workflow due date
if(dueDate != null) {
logger.debug("Due date: " + dueDate);
parameters.put(WorkflowModel.PROP_DUE_DATE, dueDate);
parameters.put(WorkflowModel.PROP_WORKFLOW_DUE_DATE, dueDate);
} else {
logger.warn("Due date not set.");
}
// set permission on Company Home for initiator
logger.debug("Setting permissions…");
NodeRef nrCompanyHome = WorkflowHelper.setPermissionForUserOnCompanyHomeNode(initiatorUsername, COMPANY_HOME_SET_PERMISSION);
logger.debug("Setting permissions…done.");
// start workflow
logger.debug("Workflow definition Id: " + workflowDefinition.id);
WorkflowPath path = null;
path = AlfrescoServices.getWorkflowService().startWorkflow(workflowDefinition.id, parameters);
// end start task
List<WorkflowTask> tasks = AlfrescoServices.getWorkflowService().getTasksForWorkflowPath(path.id);
WorkflowTask startTask = tasks.get(0);
AlfrescoServices.getWorkflowService().endTask(startTask.id, null);
// delete permission on Company Home for initiator
logger.debug("Deleting permissions…");
WorkflowHelper.deletePermissionForUserOnCompanyHomeNode(nrCompanyHome, initiatorUsername, initiatorUsername, COMPANY_HOME_SET_PERMISSION);
logger.debug("Deleting permissions…done.");
logger.info(String.format("Workflow %s started by user: %s", workflowName, initiatorUsername));
2011-05-27 09:17:43,351 INFO [STDOUT] 09:17:43,349 ERROR [ui.common.Utils] A system error happened during the operation: null
java.lang.NullPointerException
at org.alfresco.repo.workflow.jbpm.JBPMEngine.getCompanyHome(JBPMEngine.java:2675)
at org.alfresco.repo.workflow.jbpm.JBPMEngine.access$300(JBPMEngine.java:129)
at org.alfresco.repo.workflow.jbpm.JBPMEngine$11.doInJbpm(JBPMEngine.java:686)
at org.springmodules.workflow.jbpm31.JbpmTemplate$1.doInHibernate(JbpmTemplate.java:87)
at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:372)
at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:338)
at org.springmodules.workflow.jbpm31.JbpmTemplate.execute(JbpmTemplate.java:80)
at org.alfresco.repo.workflow.jbpm.JBPMEngine.startWorkflow(JBPMEngine.java:668)
at org.alfresco.repo.workflow.WorkflowServiceImpl.startWorkflow(WorkflowServiceImpl.java:330)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
…
09-11-2013 02:45 AM
Tags
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.