As we transition to the new Hyland Community, some post links may be temporarily disrupted as we finalize redirects. We apologize for the inconvenience and are working to resolve this as quickly as possible. Details.
Yes you can do this.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) …