Elsa V3學習之指令碼

饭勺oO發表於2024-08-18

在前面的文章中,可以看到我們經常使用JS指令碼來獲取變數的值。在Elsa中是支援多種指令碼的,最常用的基本是JS指令碼和C#指令碼。
本文來介紹以下這兩個指令碼使用。

Javascript

在ELSA中的javascript是透過Jint這個包來實現的。透過JS對映到C#內部的方法中。可以在程式碼中先預定義我們的Function。在Elsa.JavaScript的專案中可以找到下面這些定義JS的程式碼。
image.png
image.png
image.png
除了上面這些內建的方法之外,我們還可以自定義自己的JS方法經行對映。比如將C#的型別對映出去可以呼叫擴充套件方法。

public static void RegisterType<T>(this ITypeAliasRegistry registry, string alias) => registry.RegisterType(typeof(T), alias);

比如這樣:
image.pngimage.png

c#

c#指令碼是透過Microsoft.CodeAnalysis.CSharp.Scripting進行動態編譯和執行的。
比如內建的WorkflowInputsProxy,可以透過動態編譯新增我們的C#指令碼。
image.png
我們也可以透過這種方式動態的新增我們的指令碼支援
image.png
image.png

使用指令碼

在elsa中內建有js和c#的指令碼節點用於我們測試。
我們建立一個流程,把Run C#節點託到畫布中,並寫指令碼Console.WriteLine(1)。
image.png
執行工作流。可以看到我們控制檯輸出了1。成功執行了指令碼。
image.png
RunJavaScript指令碼也是一樣的使用方法,在前面幾篇文章中我們都有使用,這裡就不重複了。

結語

本文介紹了elsa中指令碼的使用,透過各種指令碼,我們可以靈活的編排和使用我們的工作流。

相關文章