Egendefinert
En egendefinert systemoppgave krever:
- En C#-implementasjon av interfacet
IServiceTask - Et nytt steg i prosessen
- Tilgangsstyring
Implementasjon i C#
using System.Threading.Tasks;
using Altinn.App.Core.Internal.Process.ProcessTasks.ServiceTasks;
using Altinn.App.Core.Models;
using Altinn.App.Models.model;
using Altinn.Platform.Storage.Interface.Models;
namespace Altinn.App.Code;
public class ExampleServiceTask : IServiceTask
{
public string Type => "exampleServiceTask";
public async Task<ServiceTaskResult> Execute(ServiceTaskContext context)
{
Instance instance = context.InstanceDataMutator.Instance;
DataElement dataElement = instance.Data.Find(x => x.DataType == "model");
var formData = (model)
await context.InstanceDataMutator.GetFormData(new DataElementIdentifier(dataElement));
if (formData.property1 != "true")
return ServiceTaskResult.FailedAbortProcessNext();
return ServiceTaskResult.Success();
}
}
Legg til en serviceTask-node i BPMN-prosessen.
Verdien i taskType må være like Type-property på C#-implementasjonen.
<bpmn:serviceTask id="ExampleServiceTask" name="Example service task">
<bpmn:extensionElements>
<altinn:taskExtension>
<altinn:taskType>exampleServiceTask</altinn:taskType>
</altinn:taskExtension>
</bpmn:extensionElements>
<bpmn:incoming>Flow_1yq6g64</bpmn:incoming>
<bpmn:outgoing>Flow_1xowpt0</bpmn:outgoing>
</bpmn:serviceTask>
Tilgangsstyring
Systemoppgaver kjører med rettighetene til den brukeren som driver prosessen videre (process next). Standard systemoppgaver autoriseres som write-operasjoner. For at brukeren skal ha rettigheter til å kjøre en egendefinert systemoppgave må Type fra implementasjonen legges inn som en action i policy.xml.
Legg den på samme sted som andre actions den relevante brukeren skal ha tilgang til.
<xacml:AllOf>
<xacml:Match MatchId="urn:oasis:names:tc:xacml:3.0:function:string-equal-ignore-case">
<xacml:AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">exampleServiceTask</xacml:AttributeValue>
<xacml:AttributeDesignator AttributeId="urn:oasis:names:tc:xacml:1.0:action:action-id" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:action" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false" />
</xacml:Match>
</xacml:AllOf>