2017-04-11 5 views
2

Ich verwalte den gesamten CRM-Prozessablauf in C# -Code mit der neuesten SDK-Version (8.2). Moving Forward funktioniert gut, einfach durch Aktualisieren der Stage-ID auf der relevanten Entität. Allerdings habe ich keine Ahnung, wie ich die letzte Stufe beenden könnte = wie könnte ich den Prozess auf fertig stellen. Ich mag genau die gleichen Aktionen aufzurufen, wie mit der Taste „set fertig“ klickenProgrammablauf von Geschäftsprozessablauf in Dynamics CRM 365

Antwort

2

Um den aktuellen Status der aktiven Prozessinstanz gesetzt beendete Verwendung:

Xrm.Page.data.process.setStatus("finished"); 

Vom Microsoft documentation:

Xrm.Page.data.process.setStatus(status, callbackFunction); 

status ist eine Zeichenkette, die active, abandoned oder finish sein kann. callbackFunction ist eine optionale Funktion, die aufgerufen wird, wenn der Vorgang abgeschlossen ist.

Hinweis: obwohl die Dokumentation sagt finish zu verwenden, das nicht funktioniert: finished verwenden.

+2

Danke Dave. Mein Schlechter - Ich habe nicht ausdrücklich geschrieben, dass ich es gerne mit C# (Custom Action) machen würde. Ich habe die Frage bearbeitet. Immer noch die Lösung, die Sie vorschlagen, könnte in meinem Fall als Workaround verwendet werden. – Jan

+1

Der Anwser ist fast richtig. Es scheint, dass ein Fehler in der Dokumentation vorliegt. Arbeitsaufruf: Xrm.Page.data.process.setStatus ("finished"); – Jan

+0

In Doc gibt es auch einen Status "verlassen", der richtige Name ist "abgebrochen" – Jan

3

Wenn Sie einen Geschäftsprozessablauf erstellen, erstellen Sie eine benutzerdefinierte Entität. Wenn Sie beispielsweise in der Standardlösung einen Geschäftsprozessablauf mit dem Namen Marketing Management erstellen, erstellen Sie eine Entität mit dem Namen new_marketingmanagement.

Wenn Sie einen Geschäftsprozessablauf für einen Datensatz aktivieren, wird eine Instanz dieser Entität erstellt. Die Instanz enthält Informationen, z. B. in welcher Phase sich der Prozess befindet und wann der Prozess gestartet wurde.

Sie können die Instanz deaktivieren Microsoft.Xrm.Sdk.Messages.SetStateRequest mit:

var stateRequest = new SetStateRequest 
{ 
    EntityMoniker = new EntityReference(processFlowName, processId), 
    State = new OptionSetValue(1), // Inactive. 
    Status = new OptionSetValue(2) // Finished. 
}; 
service.Execute(stateRequest); 

Wo processFlowName ist der logische Name Ihres Unternehmens Prozessablauf als String und processId ist die ID der Prozessinstanz fließen Sie als GUID deaktivieren .

Um die ID Ihrer Prozessflussinstanz zu finden, können Sie das Attribut _bpf_<primary_key>_value abfragen, wobei <primary_key> durch den Primärschlüssel der Entität ersetzt werden soll, auf der sich Ihr Prozess befindet. Auf der Account-Entität würde dies beispielsweise _bpf_accountid_value lauten.

Verwandte Themen