Use the API to invoke the One-Click Action feature.
//***************************************************
//
// THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF
// ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY
// IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR
// PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT.
//
//***************************************************
using System;
using PNMsoft.Sequence;
using PNMsoft.Sequence.Activities;
using PNMsoft.Sequence.Data;
using PNMsoft.Sequence.Expressions;
using PNMsoft.Sequence.Forms.Activities;
using PNMsoft.Sequence.Messaging;
/*
Assemblies:
PNMsoft.Sequence
PNMsoft.Sequence.Security
PNMsoft.Sequence.Extensions
PNMsoft.Sequence.Forms
*/
namespace SequenceEx.Samples
{
// This sample shows how to invoke a One Click Action programmaticaly.
// NOTE:
// You need at least a ReadAndWrite permission in order to perform this operation.
internal class InvokingOneClickActionSample
{
public void Invoke(TaskInstance taskInstance, string actionName)
{
Activity taskActivity = (Activity)taskInstance.ActivityInstance.Activity;
TaskActivityOneClickActionExtension oca = taskActivity.Extensions.Find<TaskActivityOneClickActionExtension>();
if (oca.OneClickAction != null)
{
foreach (var command in oca.OneClickAction.Commands)
{
if (string.Equals(command.Name, actionName, StringComparison.OrdinalIgnoreCase))
{
InvokeCommand(command, taskInstance);
}
}
}
}
private void InvokeCommand(OneClickActionCommand command, TaskInstance taskInstance)
{
TaskExecutor executor = new TaskExecutor(taskInstance);
DataContextManager dataManager = executor.CreateDataManager();
EntityPropertyAssignOperationContext operationContext = new EntityPropertyAssignOperationContext(
dataManager);
using (AssignContext assignCtx = new AssignContext(RuntimeExpression.Create(taskInstance), operationContext))
{
command.Assignments.Invoke(assignCtx, /*throwOnError*/true);
}
executor.SubmitChanges(dataManager, true, true);
}
}
}