Example: Starting an unstructured (ad hoc) activity (JavaScript API)

This example shows you how to start an unstructured (ad hoc) activity.

Before you begin

To start an unstructured activity, the user must be a member of one of these groups:
  • BPM admin
  • Process/case admin
  • Process/case instance owner
  • Default lane team of the corresponding lane
An authorization check is performed by the REST API only when starting an unstructured activity.

Procedure

To start an unstructured (ad hoc) activity, complete the following steps.

  1. Retrieve a list of matching unstructured activities and their IDs on a TWProcessInstance object. On the ActivityListItem object there is a list of available actions for the current user (the user that executed the retrieveActivityList() call), as well as the ID of the activity. Refer to the description of the TWProcessInstance object in JavaScript API for IBM Process Designer.
    • Set the hiddenFilter parameter to retrieve hidden activities.
    • Set the checkAuthorization parameter to true to receive only those results that the current user is authorized to view for the process or case instance.
    log.info("querying for piid: " + tw.local.piid);
    var pi = tw.system.findProcessInstanceByID(tw.local.piid);
    log.info("found process instance: " + pi);
    
    var activitiyListProperties = new tw.object.ActivityListProperties();
    
    var activityListFilter = new tw.object.ActivityListFilter();
    activityListFilter.executionStateFilter = ["READY"];
    
    activitiyListProperties.filters = new
    tw.object.listOf.ActivityListFilter();
    activitiyListProperties.filters.insertIntoList(0, activityListFilter);
    
    log.info("querying for activity list ...");
    tw.local.activities = pi.retrieveActivityList(activitiyListProperties)
    log.info("activities found: " + tw.local.activities);
    
    tw.local.aiid = // get the id of the activity you want to start (and
    'actions' contains 'ACTION_START_ACTIVITY')
  2. When you have the ID of the unstructured activity, use the findActivityInstanceByID() call to retrieve the instance of the activity. Then call start(...) to start the instance. Refer to the description of the TWBPDSystemNamespace object in JavaScript API for IBM Process Designer. The optional parameter taskOwnerUserId reassigns the task to the specified user id. This feature works only for unstructured activities with a user task implementation. Refer to the description of the ActivityInstance object in JavaScript API for IBM Process Designer.
    log.info("querying for aiid: " + tw.local.aiid);
    var ai = tw.system.findActivityInstanceByID(tw.local.aiid);
    log.info("starting activity with id: " + tw.local.aiid);
    ai.start();