API Methods

ChatterService methods

1. postFeed

USAGE: postFeed(List<ID> parents, String message, String url (optional),List<String> topics (optional),List<ID> mentions (optional))

Description: posts feed to object chatter

Return Value: none

EXAMPLE:

new WR_BPM.API().call('ChatterService', 'postFeed', new Map<String, Object>{
    'parents' =>  array of users/objects ids
    'message' => feed body
    'url' =>  url that will be added to the body
    'topics' =>  array of topics titles
    'mentions' =>  array of users ids that will be mentioned in the feed
});

2. postComment

USAGE: postComment(ID feedId, String message)

Description: posts comment to the specified feed

Return Value: none

EXAMPLE:

new WR_BPM.API().call('ChatterService', 'postComment', newMap<String, Object>{
    'feedId' =>  id of chatter feed,
    'message' => comment body
});

See related article: Chatter API Methods.

EmailMessageService methods

1. sendEmailAlert

USAGE: sendEmailAlert(String alertType, List<String>toList, String subject, String body)

Description: sends email alert

Return Value: none

EXAMPLE:

new WR_BPM.API().call('EmailMessageService', 'sendEmailAlert', new Map<String, Object>{
    'alertType' => 'Generic Notification',
    'toList' => new List<String>{'[email protected]'}, // list of email addresses
    'subject' => 'subject',
    'body' => 'body'
});

2. sendEmailMessage

USAGE: sendEmailMessage(List<String>to, String subject, String body, String fromName, Boolean plainText, List<Attachment>attachments)

Description: sends email with attachments

Return Value: none

EXAMPLE:

new WR_BPM.API().call('EmailMessageService', 'sendEmailMessage', new Map<String, Object>{
    'to' => new List<String>{'[email protected]'}, // list of email addresses
    'subject' => 'subject',
    'body' => 'body',
    'fromName' => 'fromName', // value that will be displayed as the sender's name
    'plainText' => true/false,
    'attachments' => new List<Attachment>()
 });

3. sendEmailMessageByTemplate

USAGE: sendEmailMessageByTemplate(List<String>to, ID templateId, ID recordId, String fromName)

Description: sends email using SalesForce email template

Return Value: none

EXAMPLE:

new WR_BPM.API().call('EmailMessageService', 'sendEmailMessageByTemplate', new Map<String, Object>{
    'to' => newList<String>{'[email protected]'}, // list of email addresses
    'templateId' => 'SalesForce email template Id',
    'recordId' => 'template source record Id',
    'fromName' => 'fromName' // value that will be displayed as the sender's name
});

NOTE: sendEmailMessageByTemplate API will only work when Email Delivery Contact is set on Work Relay Settings:

ConfigService

1. getDateFormat

USAGE: getDateFormat();

Description: returns date format from WorkRelay config settings

Return Value: Object

EXAMPLE:

new WR_BPM.API().call('ConfigService', 'getDateFormat', null);

2. getDateTimeFormat

USAGE: getDateTimeFormat();

Description: returns dateTime format from WorkRelay config settings

Return Value: Object

EXAMPLE:

new WR_BPM.API().call('ConfigService', 'getDateTimeFormat', null);

3. getNamespace

USAGE: getNamespace();

Description: returns Namespace from WorkRelay config settings

Return Value: Object

EXAMPLE:

new WR_BPM.API().call('ConfigService', 'getNamespace', null);
GlobalActionService

1. executeAction

USAGE: executeAction(ID actionId, String source (optional), Map<String, Object> variables (optional))

Description: executes specified Global Action

Return Value: Object (Global Action Context)

EXAMPLE:

new WR_BPM.API().call('GlobalActionService', 'executeAction', new Map<String, Object>{
    'actionId' =>  'global action ID', 
    'source' => 'global action source record ID',  //required if option has a source object
    'variables' => new Map<String, Object>{'variable_name' => 'variable_value'}
});

2. executeActionGroup

USAGE: executeActionGroup(ID groupId, String source (optional), Map<String, Object> variables (optional))

Description:  executes Global Action group.

Return Value: Object (Global Action Context)

EXAMPLE:

new WR_BPM.API().call('GlobalActionService', 'executeActionGroup', new Map<String, Object>{
    'groupId' => 'global action group id',
    'source' => 'global action group source object', //required if global action group has a source object
    'variables' => new Map<String, Object>{'variable_name' => 'variable_value'}
});

3. executeInBatch

USAGE: executeInBatch(String query, ID actionOrGroupId, IDfinishActionOrGroupId(optional), Boolean passSource (optional), Map<String, Object> variables (optional), Integer batchSize (optional), Boolean inSingleCall (optional))

Description:  starts Salesforce batch job and executes Global Action for each batch record.

Return value: Id (Apex Job Id)

EXAMPLE:

new WR_BPM.API().call('GlobalActionService', 'executeInBatch', new Map<String, Object>{
    'query' =>  query to get records, // e.g. 'select id from account limit 5'
    'actionOrGroupId' => ID of the action or action group,
    'finishActionOrGroupId' => ID of the action or action group that will be executed in the end of the batch,
    'passSource' =>  true/false //if "true" the current record will be passed to the action/group as the source object, otherwise current record id will be available in the action as {$Variables.recordId},
    'variables' => new Map<String, Object>{'variable_name' => 'variable_value'},
    'batchSize' =>  size of batch iteration,
    'inSingleCall' => true/false //if "true" executes action once for loaded records - this way records ids will be available in {$Environment.ids}
});

4. executeInScheduler

USAGE: executeInScheduler(String name,String cron, String query, ID actionOrGroupId, String source (optional), Map<String, Object> variables (optional))

Description: method initiates Salesforce scheduled job and executes Global Action for each scheduled job execution.

Return Value: Id (Apex Job Id)

EXAMPLE:

new WR_BPM.API().call('GlobalActionService', 'executeInScheduler, new Map<String, Object>{
    'name' =>The name of the scheduled job,
    'cron' =>The CRON configuration for the scheduled job,
    'actionOrGroupId' => The ID of the action or action group,
    'source' => The ID of the source record,
    'variables' => new Map<String, Object>{'variable_name' => 'variable_value'}
});
WorkflowActivator

1. startWorfkflow

USAGE: startWorkflow(String flowId, String recordId, Map<String, Object> variables (optional))

Description: starts specified process version by flow id

Return Value: List<Flow_Instance__c>

EXAMPLE:

new WR_BPM.API().call('WorkflowActivator', 'startWorkflow', new Map<String, Object>{
  'flowId' => process version id
  'recordId' => process context object id
  'variables' => new Map<String, Object>{'variable_name' => 'variable_value'} // initial variables
});

2. startWorkflowByFlowName

USAGE: startWorkflowByFlowName(String flowName, String recordId, Map<String, Object> variables (optional))

Description: starts specified process version by version name

Return Value: List<Flow_Instance__c>

EXAMPLE:

new WR_BPM.API().call('WorkflowActivator', 'startWorkflowByFlowName', new Map<String, Object>{
  'flowName' => process version name,
  'recordId' => process context version id,
  'variables' => new Map<String, Object>{'variable_name' => 'variable_value'}
});

3. startWorkflowByProcessName

USAGE: startWorkflowByProcessName(String processName, String recordId, Map<String, Object> variables (optional))

Description: starts primary version of a specified process by process name

Return Value: List<Flow_Instance__c>

EXAMPLE:

new WR_BPM.API().call('WorkflowActivator', 'startWorkflowByProcessName', new Map<String, Object>{
  'processName' => The process name,
  'recordId' => SObject.Id,
  'variables' => new Map<String, Object>{'variable_name' => 'variable_value'}
});

4. setDisabled

USAGE: setDisabled(Boolean value)

Description: disables logic, that starts processes. Works only within one request.

Return Value: none

EXAMPLE:

new WR_BPM.API().call('WorkflowActivator', 'setDisabled', true|false);

5. setIgnoreFLows

USAGE: setIgnoreFlows(String value)

Description: defines flows, that should be ignored by the logic that starts processes. Works only within one request.

Return Value: none

EXAMPLE:

new WR_BPM.API().call('WorkflowActivator', 'setIgnoreFlows', '["flowId_1", "flowId_2",....]');

6. setIgnoreRecords

USAGE: setIgnoreRecords(String value)

Description: defines SObject records, that should be ignored by the logic that starts processes. Works only within one request.

Return Value: none

EXAMPLE:

new WR_BPM.API().call('WorkflowActivator', 'setIgnoreRecords', '["recordId_1", "recordId_2", ....]');

7. setCheckOnlyFlows

USAGE: setCheckOnlyFlows(String value)

Description: defines flows, that should be checked by the logic that starts processes. All other flows will be ignored. Works only within one request.

Return Value: none

EXAMPLE:

new WR_BPM.API().call('WorkflowActivator', 'setCheckOnlyFlows', '["flowId_1", "flowId_2", ....]');

8. setNewInstancesLimit

USAGE: setNewInstancesLimit(String value)

Description: sets the limit of maximum number of process instances that could be started for the current request.

Return Value: none

EXAMPLE:

new WR_BPM.API().call('WorkflowActivator', 'setNewInstancesLimit', 10);
WorkflowProceedService

1. completeStep

USAGE: completeStep(String cursorId, String operation, String comments (optional), Date startDate (optional), Date completeDate (optional), Map<String,Object> environment(optional))

Description: executes proceed of the process step. If proceed operation requires a new transaction, the method will throw WR_BPM.LimitsException.

Return Value: Boolean //if proceed executed successfully

EXAMPLE:

new WR_BPM.API().call('WorkflowProceedService', 'completeStep', new Map<String, Object>{
  'cursorId' => Flow_Instance_Cursor__c.Id,
  'operation' => 'Proceed|Approve|Reject',
  'comments' => 'Some Comment',
  'startDate' => Actual Start DateTime,
  'completeDate' => Actual End DateTime, 
  'environment' => new Map<String,Object>{'name' => 'value'} //values that can be used via process {$Environment} while step proceeding
});

2. completeStep

USAGE: completeStep(Flow_Instance_Cursor__c flowInstanceCursor, String operation, String comments (optional), Date startDate (optional), Date completeDate (optional))

Description: executes proceed of the process step. If proceed operation requires a new transaction, the method will throw WR_BPM.LimitsException.

Return Value: Boolean //if proceed executed successfully

EXAMPLE:

new WR_BPM.API().call('WorkflowProceedService', 'completeStep', new Map<String, Object>{
  'flowInstanceCursor' => Flow_Instance_Cursor__c,
  'operation' => 'Proceed|Approve|Reject',
  'comments' => 'Some Comment', 
  'startDate' => Actual Start DateTime, 
  'completeDate' => Actual End DateTime, 
  'environment' => new Map<String,Object>{'name' => 'value'} //values that can be used via process {$Environment} while step proceeding
});

3. completeParentStep

USAGE: completeParentStep(String cursorId, String operation, String comments (optional), Date startDate (optional), Date completeDate (optional))

Description: executes proceed of the parent process step. If proceed operation requires a new transaction, the method will throw WR_BPM.LimitsException.

Return Value: Boolean //if proceed executed successfully

EXAMPLE:

new WR_BPM.API().call('WorkflowProceedService', 'completeParentStep', new Map<String, Object>{
  'cursorId' => Flow_Instance_Cursor__c.Id,
  'operation' => 'Proceed|Approve|Reject',
  'comments' => 'Some Comment', 
  'startDate' =>  Actual End DateTime, 
  'completeDate' => Actual End DateTime 
});

4. completeStepAsync

USAGE: completeStepAsync(String flowInstanceCursorId, String operation, String stepId (optional), String comments (optional), String stepId, Date startDate (optional), Date completeDate (optional))

Description: executes proceed of the process step in async manner

Return Value: none

EXAMPLE:

new WR_BPM.API().call('WorkflowProceedService', 'completeStepAsync', new Map<String, Object>{
  'cursorId' => Flow_Instance_Cursor__c.Id,
  'operation' => 'Proceed|Approve|Reject',
  'stepId' =>  Flow_Instance_Cursor__c.Step__c, 
  'comments' => 'Some Comment', 
  'startDate' => Actual Start DateTime, 
  'completeDate' => Actual End DateTime
});
WorkflowService

1. activateFlowInstances

USAGE: activateFlowInstances(String instancesIds, Boolean flag, Boolean withSubProcesses)

Description: activates/deactivates specified flow instances

Return Value: none

EXAMPLE:

new WR_BPM.API().call('WorkflowService', 'activateFlowInstances', new Map<String, Object>{
  'instancesIds' => "["instanceId_1","instanceId_2", ...]",
  'flag' => true/false, // use true to activate instances, false to deactivate them 
  'withSubProcesses' => true/false // use true to activate instances along with their subprocesses
});

2. changeAssignee

USAGE: changeAssignee(String cursorId, String assigneeType, String assignee)

Description: changes assignee of the specified cursor

Return Value: none

EXAMPLE:

new WR_BPM.API().call('WorkflowService', 'changeAssignee', new Map<String, Object>{
  'cursorId' => Flow_Instance_Cursor__c.Id,
  'assigneeType' => User/Group/Role/Profile/System, //pick one
  'assignee' => ids in JSON array format or 'System' if assigneeType is System
});

3. changeDuration

USAGE: changeDuration(String cursorId, String duration)

Description: sets duration on the specified task

Return Value: none

EXAMPLE:

new WR_BPM.API().call('WorkflowService', 'changeDuration', new Map<String, Object>{
  'cursorId' => Flow_Instance_Cursor__c.Id,
  'duration' => '1d 2h 30m' // [1d 1h 1m] format
});

4. refreshDuration

USAGE: refreshDuration(String cursorId)

Description: recalculates duration for an active step (cursor)

Return Value: none

EXAMPLE:

new WR_BPM.API().call('WorkflowService', 'refreshDuration', new Map<String, Object>{
  'cursorId' => Flow_Instance_Cursor__c.Id
});

5. changeFlowStep

USAGE: changeFlowStep(String cursorId, String targetStepId, Boolean complete)

Description: moves cursor to the specified process step

Return Value: none

EXAMPLE:

new WR_BPM.API().call('WorkflowService', 'changeFlowStep', new Map<String, Object>{
  'cursorId' => Flow_Instance_Cursor__c.Id,
  'targetStepId' => Flow_Step_Junction__c.Id, 
  'complete' => false // if set to true method will complete instance
});

6. changeStartDateConfig

USAGE: changeStartDateConfig(String cursorId, String startDateConfig)

Description: sets start date config on the specified cursor based on the WR business hours setting

Return Value: none

EXAMPLE:

new WR_BPM.API().call('WorkflowService', 'changeStartDateConfig',new Map<String, Object>{
  'cursorId' => Flow_Instance_Cursor__c.Id,
  'startDateConfig' => String.valueOf(system.today() +1)  // pass empty string to remove start date config from cursor
});

7. cloneInstance

USAGE: cloneInstance(String instanceId, String recordId)

Description: clones existing flow instance and relates it to the specified record

Return Value: Flow_Instance__c (new flow instance record)

EXAMPLE:

new WR_BPM.API().call('WorkflowService', 'cloneInstance',new Map<String, Object>{
  'instanceId' => Flow_Instance__c.Id,
  'recordId' => context record id to relate new flow instance to
});

8. migrateFlowInstances

USAGE: migrateFlowInstances(String sourceFlowId, String targetFlowId, String instances, String stepsMapping (Optional))

Description: migrates flow instances from source flow to target flow considering flow mapping. Migrated flow instances have Inactive state. Flow instances on source flow are not removed.

Return Value: List<Flow_Instance__c> - migrated flow instances list

EXAMPLE:

new WR_BPM.API().call('WorkflowService', 'migrateFlowInstances', new Map<String, Object>{
  'sourceFlowId' => Flow__c.Id, // source flow id 
  'targetFlowId' => Flow__c.Id, // target flow id 
  'instances' => 'select id from wr_bpm__flow_instance__c where id in ( \'instanceId_1\', \'instanceId_2\')', // SOQL query or Ids in JSON array format.
  'stepsMapping' => The JSON object in format {"SOURCE_STEP_ID":"TARGET_STEP_ID", ...} (Optional)
});

9. reactivateReminders

USAGE: reactivateReminders(String cursorId, List<ID> remindersIds)

Description: reactivates inactive reminders i.e. ones were already executed

Return Value: none

EXAMPLE:

new WR_BPM.API().call('WorkflowService', 'reactivateReminders', new Map<String, Object>{
  'cursorId' => Flow_Instance_Cursor__c.Id,
  'remindersIds' => new List<ID>{'reminderId_1', 'reminderId_2'}
}); 

10. reactivateEscalations

USAGE: reactivateEscalations(String cursorId, List<ID> escalationsIds)

Description: reactivates inactive escalations i.e. ones were already executed

Return Value: none

EXAMPLE:

new WR_BPM.API().call('WorkflowService', 'reactivateEscalations', new Map<String, Object>{
  'cursorId' => Flow_Instance_Cursor__c.Id,
  'escalationsIds' => new List<ID>{'escalationId_1', 'escalationId_2'}
});

11. restartCursor

USAGE: restartCursor(ID cursorId)

Description: restarts flow instance cursor

Return Value: Flow_Instance_Cursor__c

EXAMPLE:

new WR_BPM.API().call('WorkflowService', 'restartCursor', Flow_Instance_Cursor__c.Id);

12. restartBranch

USAGE: restartBranch(ID instanceId, ID branchId)

Description: restarts flow instance branch

Return Value: Flow_Instance_Cursor__c

EXAMPLE:

new WR_BPM.API().call('WorkflowService', 'restartBranch', new Map<String,Object>{
  'instanceId' => Flow_Instance__c.Id,
  'branchId' => Flow_Branch__c.Id
});

13. restartInstance

USAGE: restartInstance(ID instanceId, Boolean keepHistory)

Description: restarts flow instance

Return Value: Flow_Instance__c

EXAMPLE:

new WR_BPM.API().call('WorkflowService', 'restartInstance', new Map<String,Object>{
  'instanceId' => Flow_Instance__c.Id,
   'keepHistory' => true/false //will keep process history after restarting instance if set to 'true'
});

14. terminateCursor

USAGE: terminateCursor(ID cursorId, ID stepId)

Description: completes flow instance cursor

Return Value: none

EXAMPLE:

new WR_BPM.API().call('WorkflowService', 'terminateCursor', new Map<String,Object>{
   'cursorId' => Flow_Instance_Cursor__c.Id,
    'stepId ' => Flow_Step_Junction__c.Id
});

15. terminateInstance

USAGE: terminateInstance(ID instanceId, Boolean withSubProcesses, String comments)

Description: completes flow instance. Can also complete subprocess instances

Return Value: none

EXAMPLE:

new WR_BPM.API().call('WorkflowService', 'terminateInstance', new Map<String,Object>{
   'instanceId' => Flow_Instance__c.Id,
   'withSubProcesses ' => true/false, // (will also complete subprocess instances if set to true
   'comments' => user comments
});

16. throwException

USAGE: throwException(String message)

Description: throws WR_BPM.GenericException  

Return Value: none

EXAMPLE:

new WR_BPM.API().call('WorkflowService', 'throwException', 'Message...');

17. updateActualDates

USAGE: updateActualDates(String cursorOrHistoryId, Object startDate, Object endDate)

Description: updates actual dates on flow instance history

Return Value: none

EXAMPLE:

new WR_BPM.API().call('WorkflowService', 'updateActualDates', new Map<String,Object>{
   'cursorOrHistoryId' => ID of flow instance cursor or flow instance history, 
   'startDate' =>  dateTime or 'IGNORE' if date should not be updated,
   'completeDate' => dateTime or 'IGNORE' if date should not be updated
});

18. updateManagers

USAGE: updateManagers(ID instanceId, String managers)

Description: updates managers on specified flow instance

Return Value: none

EXAMPLE:

new WR_BPM.API().call('WorkflowService', 'updateManagers', new Map<String,Object>{
   'instanceId' => Flow_Instance__c.Id,
   'managers' => '["user1_ID", "user2_ID", ....]'
});

19. updateProcessingFrequency

USAGE: updateProcessingFrequency(String cursorsIds, Integer frequency)

Description: updates processing frequency for specified cursors

Return Value: none

EXAMPLE:

new WR_BPM.API().call('WorkflowService', 'updateProcessingFrequency', new Map<String,Object>{
   'cursorsIds' => '["cursorId_1", "cursorId_2", ...]',
   'frequency' => -1 / 0 / 4 / 8 / 12 / 24 / 48   //integer value of hours
});

20. updateProcessingFrequencyByObjectsAndSteps

USAGE: updateProcessingFrequencyByObjectsAndSteps(String objectStepMap, Integer frequency)

Description: updates processing frequency for cursors based on object id and steps ids

Return Value: none

EXAMPLE:

new WR_BPM.API().call('WorkflowService', 'updateProcessingFrequencyByObjectsAndSteps', new Map<String,Object>{
   'objectStepMap' => JSON object in format '{"object_id":["step_id", ...]}'
   'frequency' => -1 / 0 / 4 / 8 / 12 / 24 / 48   //integer value of hours
});
VariableService

1. updateVariable

USAGE: updateVariable(String instanceId, String name, Object value)

Description: updates single variable on specified flow instance. If there is no specified variable on flow instance, method would create new variable.

Return Value: none

EXAMPLE:

new WR_BPM.API().call('VariableService', 'updateVariable', new Map<String, Object>{
  'instanceId' => Flow_Instance__c.Id, 
  'name' => 'variable_name', 
  'value' => {SOME_VALUE}
});

2. updateVariables

USAGE: updateVariables(String instanceId, Map<String, Object> variables)

Description: updates multiple variables on specified flow instance.  If there are no specified variables on flow instance, method would create new variables.

Return Value: none

EXAMPLE:

new WR_BPM.API().call('VariableService', 'updateVariables', new Map<String, Object>{
  'instanceId' => Flow_Instance__c.Id, 
  'variables' => new Map<String, Object>{'variable_name' => {SOME_VALUE}}
});

3. updateVariablesByInstances

USAGE: updateVariablesByInstances(List<String> instancesIds, Map<String, Object> variables)

Description: updates multiple variables on specified flow instances.

Return Value: none

EXAMPLE:

new WR_BPM.API().call('VariableService', 'updateVariables', new Map<String, Object>{
  'instancesIds' => List<String>{Flow_Instance__c.Id}, //flow instances ids 
  'variables' => new Map<String, Object>{'variable_name' => {SOME_VALUE}}
});
FlowGantService

1. recalculateGanttProperties

USAGE: recalculateGanttProperties(ID flowId, ID recordId, ID stepId, DateTime date)

Description: recalculates dates on process step based on flow and record ids

Return Value: none

EXAMPLE:

new WR_BPM.API().call('FlowGanttService', 'recalculateGanttProperties', new Map<String, Object>{
  'flowId' => The flow ID,
  'recordId' => The record ID,
  'stepId' => The step ID,
  'date' => The date/time when recalculation will be executed
});

2. recalculateGanttPropertiesByInstance

USAGE: recalculateGanttPropertiesByInstance(ID instanceId, ID stepId, DateTime date)

Description: recalculates dates on process step based on instance id

Return Value: none

EXAMPLE:

new WR_BPM.API().call('FlowGanttService', 'recalculateGanttPropertiesByInstance', new Map<String, Object>{
  'instanceId' => The process instance ID,
  'stepId' => The step ID, 
  'date' => The date/time when recalculation will be executed
});
SFWorkflowService

1. lock

USAGE: lock(String ids, Boolean allOrNothing)

Description: locks Sales Force record. Uses object Approval Process.

Return Value: Approval.LockResult

EXAMPLE:

new WR_BPM.API().call('SFWorkflowService', 'lock', new Map<String, Object>{
  'ids' => record ids in JSON format,
  'allOrNothing' => Boolean specifying whether this operation allows partial success. If you specify false and a record fails, the remainder of the DML operation can still succeed
});

2. unlock

USAGE: unlock(String ids, Boolean allOrNothing)

Description: unlocks Sales Force record. Uses object Approval Process.

Return Value: Approval.LockResult

EXAMPLE:

new WR_BPM.API().call('SFWorkflowService', 'lock', new Map<String, Object>{
  'ids' => record ids in JSON format,
  'allOrNothing' => Boolean specifying whether this operation allows partial success. If you specify false and a record fails, the remainder of the DML operation can still succeed
});

3. startFlow

USAGE: startFlow(String namespace, String flowName, String variables)

Description: starts sales force flow

Return Value: Flow.Interview

EXAMPLE:

new WR_BPM.API().call('SFWorkflowService', 'startFlow', new Map<String,Object>{
  'namespace' => organization namespace, optional, 
  'flowName' => Sales Force flow name, 
  'variables' => JSON object
});
LicenseService service

1. addLicenseUser

USAGE: addLicenseUser(String license, String user ID)

Description: adds License to a specified single user

Return Value: WR_BPM__License_User__c object

EXAMPLE:

new WR_BPM.API().call('LicenseService', 'addLicenseUser', new Map<String, Object>{
  'license' => The license Id or Name,
  'userId' => user ID
});

2. removeLicenseUser

USAGE: removeLicenseUser(String license, String user ID)

Description: revokes License from a specified single user

EXAMPLE:

new WR_BPM.API().call('LicenseService', 'removeLicenseUser', new Map<String, Object>{
  'license' => The license Id or Name,
  'userId' => user ID
});

3. addLicenseUsers

USAGE: addLicenseUsers(String license, String user IDs)

Description: adds License to a specified set of users

Return Value: WR_BPM__License_User__c object

EXAMPLE:

new WR_BPM.API().call('LicenseService', 'addLicenseUsers', new Map<String, Object>{
  'license' => The license Id or Name,
  'usersIds' => The users Ids in JSON array format
});

4. removeLicenseUsers

USAGE: removeLicenseUsers(String license, String user IDs)

Description: revokes Licenses from a specified set of users

EXAMPLE:

new WR_BPM.API().call('LicenseService', 'removeLicenseUsers', new Map<String, Object>{
  'license' => The license Id or Name,
  'usersIds' => The users Ids in JSON array format
});

0 Comments

Add your comment

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.