目录
特征
例子
好处
如何安装Wexflow?
Windows(.NET)
Windows(.NET核心)
Linux
macOS
Android
如何卸载Wexflow?
Windows
Linux
macOS
Android
如何使用Wexflow?
通常的做法
Wexflow Manager
后端
登录
重设密码
仪表板(Dashboard)
管理(Manager)
设计(Designer)
历史
用户
安装
Android Manager
工作流程示例
顺序工作流程
工作流程1
工作流程2
工作流程3
工作流程4
工作流程5
执行图
流程图工作流
If
While
Switch
工作流事件
如何创建自定义任务?
通常的做法
日志记录(Logging)
文件(Files)
实体(Entities)
设计(Designer)
调试(Debugging)
如何调试Wexflow?
Wexflow使用的库
历史
高性能,可扩展,模块化和跨平台的工作流引擎。
Wexflow是一个高性能、可扩展、模块化和跨平台的工作流引擎。Wexflow的目标是在没有用户干预的情况下自动执行重复任务。在Wexflow的帮助下,构建自动化和工作流过程变得简单。Wexflow还有助于使长期运行的流程变得简单。
Wexflow旨在使系统,应用程序和人员之间的自动化、工作流程、长时间运行的流程和交互变得简单,直接和干净。通过这个功能强大的工作流引擎,系统或应用程序之间的通信变得容易。
Wexflow使用 .NET Core,这是一个跨平台版本的.NET,用于构建网站、服务和控制台应用程序。因此,Wexflow提供了一个跨平台的工作流服务器和一个跨平台的后端,可以轻松灵活地管理、设计和跟踪工作流。Wexflow服务器及其后端程序运行在Windows,Linux和macOS上。
Wexflow还利用了大规模企业系统中使用的 Quartz.NET开源作业调度系统。因此,Wexflow在计划工作流作业(如cron工作流)时提供了可靠性 。
此外,Wexflow 在其服务器和后端程序中使用LiteDB NoSQL文档存储数据库,这增强并改善了此工作流引擎的性能。
Wexflow提供以下功能:
Wexflow也带有后端,因此您可以在所有工作流程中进行搜索和过滤,拥有工作流程的实时统计数据,轻松管理工作流程,轻松设计工作流程,并轻松跟踪工作流程:
只是为了让您了解Wexflow的功能,这是“Designer”页面的截图。使用“Designer”页面,我们可以获得工作流依赖关系图的良好视觉概览。每个节点代表一个必须运行的任务:
找到更多的功能细节。
以下是使用Wexflow的一些示例:
以下是使用Wexflow的好处:
Wexflow易于安装,需要轻松配置。它可以在几秒钟内安装和配置。
本节介绍如何在Windows系统上安装.NET版本的Wexflow,以及如何在Windows系统,Linux系统或macOS系统上安装.NET Core版本的Wexflow。
Wexflow可以安装在Windows XP,Windows Server 2003或更高版本上。Wexflow支持.NET Framework 4.0或更高版本。
要安装Wexflow,请执行以下操作:
1.安装Microsoft .NET Framework 4.0或更高版本。
2.安装Wexflow:
3.选择目标位置:
4.您可以选择创建桌面快捷方式:
5.单击“安装”以执行安装:
6.安装程序将在系统上安装Wexflow:
7.最后,单击“完成”以完成安装:
8. 如果要使用同步任务,请安装Microsoft Sync Framework 2.1 Redistributables:
8.1如果您使用的是Wexflow x86,则安装Synchronization-v2.1-x86-ENU.msi和ProviderServices-v2.1-x86-ENU.msi。
8.2如果使用Wexflow x64,则安装Synchronization-v2.1-x64-ENU.msi和ProviderServices-v2.1-x64-ENU.msi。
开始菜单中添加了以下菜单:
安装Wexflow后,将安装名为Wexflow的Windows服务并自动启动。要启动Wexflow Manager,必须运行此Windows服务。但是,如果要停止它,可以从Windows服务控制台执行此操作:
端口8000必须是免费的。如果您已经在使用.NET版本的Wexflow,则必须停止Wexflow Windows服务或更改.NET Core版本的端口。
要更改.NET Core版本的端口,请编辑文件Wexflow.Server \ appsettings.json并更改设置“WexflowServicePort”的值。然后,通过编辑配置文件Backend \ _js \ settings.js来更改后端中的端口。
最后,您可以通过在浏览器上打开Backend \ index.html网页来打开后端。
要打开后端,请转到“后端”文件夹,然后双击“index.html”文件:
如果您是第一次安装Wexflow,则可以使用这些凭据登录:
用户名:admin
密码:wexflow2018
然后,您可以从后端更改密码。
cd /opt/wexflow/Wexflow.Server
sudo dotnet Wexflow.Server.dll
就是这样,Wexflow已安装并准备工作:
最后,您可以通过在浏览器上打开网页/opt/wexflow/Backend/index.html来打开后端:
如果您是第一次安装Wexflow,则可以使用这些凭据登录:
用户名:admin
密码:wexflow2018
然后,您可以从后端更改密码。
如果要使用图形处理任务,则必须安装以下库:
sudo apt install libc6-dev libgdiplus
cd /Applications/wexflow/Wexflow.Server
dotnet Wexflow.Server.dll
就是这样,Wexflow已经安装并准备好工作了。
最后,您可以通过在浏览器上打开网页/Applications/wexflow/Backend/index.html来打开后端:
如果您是第一次安装Wexflow,则可以使用这些凭据登录:
用户名:admin
密码:wexflow2018
然后,您可以从后端更改密码。
安装Wexflow服务器后,按照以下步骤在Android设备上安装Wexflow Manager:
1.下载wexflow.apk
2.安装wexflow.apk
3.启动Wexflow应用程序并通过设置菜单打开应用程序设置:
5.单击“Wexflow Web Service URI”:
6.配置Wexflow Web Service Uri:
确保Wexflow服务器正在运行,并且防火墙中的端口8000已打开。
就是这样,Wexflow应用程序已准备就绪。如果您是第一次安装Wexflow,则可以使用这些凭据登录:
用户名:admin
密码:wexflow2018
您可以从后端更改密码。
登录后,您将获得可以从Android设备轻松管理的工作流列表:
要卸载Wexflow,只需单击“Windows开始菜单> Wexflow”中的“卸载”菜单。
或者转到“控制面板>添加/删除程序”,然后选择“Wexflow”并单击卸载:
卸载Wexflow后,将显示一个窗口,通知卸载成功:
Wexflow卸载之后,文件夹C:\Wexflow\ 和C:\WexflowTesting\不会被删除,以防止用户定义的工作流和测试场景被删除。但是,如果您不需要它们,可以手动删除它们。
日志文件 C:\Program Files\Wexflow\Wexflow.log 也不会被删除,以跟踪Wexflow完成的上一次操作。但是,如果您不需要日志,则可以删除日志文件。
要从Linux系统卸载Wexflow,请执行以下操作:
sudo rm -rf /opt/wexflow
要从macOS系统卸载Wexflow,只需从/Applications/文件夹中删除wexflow即可。
要从Android设备卸载Wexflow,只需打开“设置”>“应用程序”>“Wexflow”,然后将其卸载即可。
安装Wexflow后,将创建文件夹 C:\Wexflow\和C:\WexflowTesting\。文件夹C:\ Wexflow\是Wexflow的主要配置文件夹,包含以下元素:
文件夹C:\WexflowTesting\ 包含测试方案的数据。
日志用写在C:\Program Files\Wexflow\Wexflow.log中。每天有一个日志文件。旧的日志文件以Wexflow.logyyyyMMdd格式保存。
在.NET Core版本中:
在工作流的配置文件如下:
有关cron工作流程,请阅读以下文档以获取更多详细信息。
这里解释了局部变量 。
这里解释全局变量 。
Task的name选项必须是以下之一。
执行图在示例部分中说明。
要了解如何创建自己的工作流程,可以查看可用的工作流程示例 C:\Wexflow\Workflows\ 并阅读任务文档。
如果在创建新工作流程C:\Wexflow\Workflows\或删除或修改现有工作流程时,您不必重新启动Wexflow Windows服务,以使这些修改生效。Wexflow引擎将自动检测更改并重新加载,添加或删除工作流。
要禁用工作流,您可以将工作流的enabled设置选项设置为false。如果要使工作流从Wexflow引擎加载的工作流列表中消失,则可以在C:\Wexflow\Workflows\中创建一个名为disabled的目录,并将该工作流移动到该目录。
任务之间如何进行通信?
状态通过selectFiles和selectEntities设置在任务之间传输。
这按以下方式工作:
更直观(来自示例):
selectEntities设置与selectFiles的工作方式相同。唯一的区别是selectEntities旨在用于处理来自数据库或Web服务的自定义对象的任务。要进一步了解,请阅读有关实体的文档说明。
当您第一次打开Wexflow Manager时,您将看到以下窗口:
以下是登录凭据:
登录后,您将看到此窗口:
然后,您可以从后端更改密码。
使用Wexflow Manager,您可以轻松管理工作流程。Wexflow Manager是一个简单的应用程序,允许用户执行以下操作:
要查看Wexflow中发生了什么,请在如Notepad ++等文本编辑器中打开日志文件C:\Program Files\Wexflow\Wexflow.log。Notepad ++将在填满时更新日志文件。
后端是一个可以托管在IIS,Apache,Nginx或任何其他Web服务器上的网站。后端也可以在本地运行。
后端提供有关工作流程的实时统计信息。它可以让您轻松灵活地管理、设计和跟踪您的工作流程。您可以使用后端轻松访问、配置、管理(manage)、治理(administer)和开发工作流程。
当您第一次打开后端时,您将到达登录页面:
以下是登录凭据:
登录后,您可以从“用户”页面更改密码。
如果用户忘记了密码,可以点击“忘记密码?” 链接重置他的密码:
当用户点击“提交”按钮时,会向他发送一封电子邮件,上面写着他可以在登录后更改的临时密码。
要允许后端发送电子邮件,必须在配置文件中设置SMPT配置:C:\Program Files\Wexflow\Wexflow.Server.exe.config:
...
在.NET Core版本中,要在Windows系统中编辑的配置文件是Wexflow.Server\appsettings.json:
{
"WexflowSettingsFile": "C:\\Wexflow-dotnet-core\\Wexflow.xml",
"WexflowServicePort": 8000,
"Smtp.Host": "smtp.gmail.com",
"Smtp.Port": 587,
"Smtp.EnableSsl": true,
"Smtp.User": "user",
"Smtp.Password": "password",
"Smtp.From": "user",
"Logging": {
"IncludeScopes": false,
"LogLevel": {
"Default": "Verbose",
"System": "Information",
"Microsoft": "Information"
}
}
}
在Linux系统中,要编辑的配置文件是/opt/wexflow/Wexflow.Server/appsettings.json:
{
"WexflowSettingsFile": "/opt/wexflow/Wexflow/Wexflow.xml",
"WexflowServicePort": 8000,
"Smtp.Host": "smtp.gmail.com",
"Smtp.Port": 587,
"Smtp.EnableSsl": true,
"Smtp.User": "user",
"Smtp.Password": "password",
"Smtp.From": "user",
"Logging": {
"IncludeScopes": false,
"LogLevel": {
"Default": "Verbose",
"System": "Information",
"Microsoft": "Information"
}
}
}
在macOS系统中,要编辑的配置文件是/Applications/wexflow/Wexflow.Server/appsettings.json:
{
"WexflowSettingsFile": "/Applications/wexflow/Wexflow/Wexflow.xml",
"WexflowServicePort": 8000,
"Smtp.Host": "smtp.gmail.com",
"Smtp.Port": 587,
"Smtp.EnableSsl": true,
"Smtp.User": "user",
"Smtp.Password": "password",
"Smtp.From": "user",
"Logging": {
"IncludeScopes": false,
"LogLevel": {
"Default": "Verbose",
"System": "Information",
"Microsoft": "Information"
}
}
}
登录后,您将到达仪表板页面:
Wexflow为您提供了一个漂亮的仪表板,可以查看工作流程的实时统计数据。实际上,“仪表板”页面为您提供了有关工作流程的实时统计信息,可让您轻松、详细地跟踪工作流程服务器。在仪表板中,您还可以按关键字或按日期过滤工作流条目。您还可以按日期、名称等排序工作流条目。
“管理”页面可让您轻松管理工作流程。实际上,您可以从此页面启动工作流、暂停正在运行的工作流、恢复暂停的工作流、停止正在运行的工作流并按关键字搜索工作流:
“设计”页面可让您轻松设计工作流程。实际上,您可以从此页面创建新工作流程,编辑现有工作流程或删除工作流程。此页面还允许您可视化工作流的依赖关系图。使用“设计”页面,我们可以获得工作流依赖关系图的良好视觉概览。每个节点代表一个必须运行的任务:
“历史”页面将允许您跟踪工作流服务器上发生的所有工作流程和所有内容。实际上,在此页面中,您将概览在工作流服务器上执行的所有工作流实例。此外,您可以按关键字或日期过滤条目。您还可以按日期、名称等排序条目。
“用户”页面允许创建新用户,更改密码和用户信息,以及删除具有受限访问权限的用户。
具有受限权限的用户只能访问“仪表板”页面和“历史记录”页面。当他登录时,他看到的后端界面如下:
后端是一个可以托管在IIS,Apache,Nginx或任何其他Web服务器上的网站。后端也可以在本地运行。
要在Web服务器上安装后端,只需在Web服务器中复制文件夹“C:\Program Files\Wexflow\Backend”的内容即可。然后,如果要在另一台计算机上安装后端,请配置工作流服务器URI。只需编辑配置文件“js/settings.js”:
Settings = {
Uri: "http://localhost:8000/wexflow/"
};
而不是localhost,将机器的IP或DNS放在安装Wexflow服务器的位置。
Wexflow提供了一个用于管理工作流程的Android应用程序。
Wexflow Android Manager允许用户执行以下操作:
Wexflow旨在为工作流程和自动化领域的初学者提供简单易用的方法。
可以通过设计人员或通过编辑工作流程的配置文件进行XML编辑来设计工作流程。但是,强烈建议您了解Wexflow工作流语法,以熟悉此工作流引擎。
Wexflow中的每个工作流都有一个默认位于文件夹 C:\Wexflow\Workflows中的 配置文件。每个配置文件都包含一组要执行的设置和任务,具体取决于指定的计划和指定的配置。
在本节中,将介绍几个工作流程示例,以使最终用户熟悉Wexflow工作流程语法。
顺序工作流按顺序逐个执行一组任务。任务以顺序方式执行,直到最后一个任务完成。可以通过修改工作流的执行图来更改任务执行的顺序。
此工作流将发票上载到SFTP服务器,然后等待2天,然后通知客户。
首先,FilesLoader任务加载位于文件夹C:\WexflowTesting\Invoices\中的所有发票,然后Ftp任务将它们上传到SFTP服务器,然后Wait任务等待2天,然后FilesLoader任务以XML格式加载电子邮件,然后MailsSender任务发送电子邮件。最后,FilesMover任务将发票移动到文件夹C:\WexflowTesting\Invoices_sent\中。
此工作流等待文件到达C:\WexflowTesting\Watchfolder1\和C:\WexflowTesting\Watchfolder2\,然后将它们上载到FTP服务器,然后在将它们移动到C:\WexflowTesting\Sent\文件夹中。此工作流程每2分钟执行一次。
首先,该FilesLoader任务加载位于文件夹C:\WexflowTesting\Watchfolder1\C:\WexflowTesting\Watchfolder2\和中的所有文件,然后Ftp任务加载文件并将它们上载到FTP服务器。最后,FilesMover任务将文件移动到C:\WexflowTesting\Sent\文件夹 。
此工作流程通过FFMPEG将位于C:\WexflowTesting\WAV\中的WAV文件转码MP3格式,并将转码后的文件移动到 C:\WexflowTesting\MP3\。
首先,FilesLoader任务加载位于C:\WexflowTesting\WAV\ 文件夹中的所有文件, 然后 ProcessLauncher 任务通过指定正确的命令来为每个文件启动FFMPEG进程以创建MP3文件。最后,FilesMover任务将MP3文件移动到C:\WexflowTesting\MP3\文件夹 。
此工作流等待WAV文件到达C:\WexflowTesting\WAV\,然后通过VLC将它们转码为MP3文件,然后将MP3文件上传到FTP服务器,然后将WAV文件移动到C:\WexflowTesting\WAV_processed\。此工作流程每2分钟执行一次。
首先,FilesLoader任务加载位于C:\WexflowTesting\WAV\ 文件夹中的所有文件,然后ProcessLauncher 任务通过指定正确的命令来启动每个文件的VLC过程以创建MP3文件。然后,Ftp任务加载ProcessLauncher 任务生成的MP3文件,然后将其上载到FTP服务器。最后,FilesMover任务将处理后的WAV文件移动到C:\WexflowTesting\WAV_processed\文件夹。
此工作流程从FTP服务器下载特定文件。此工作流程首先列出位于服务器根文件夹中的所有文件,然后通过XSLT(LisFiles.xslt)标记要下载的特定文件,然后通过Ftp任务通过todo="toDownload" 和from="app4"标签下载文件,然后将下载的文件移动到C:\WexflowTesting\Ftp_download\文件夹。
粗略地说,Ftp任务加载位于工作流运行实例中的FTP服务器根文件夹的文件列表,然后是ListFiles任务输出和包含所有加载文件的XML文件,然后该Xslt任务将此XML作为输入并生成包含被调用的系统节点的XML,其中包含
要了解标记和重命名文件的工作方式,请参阅ListFiles和Xslt任务的文档。
以下是用于标记文件的XSLT ListFiles.xslt:
此工作流加载文件C:\WexflowTesting\file1.txt ,然后将其上载到FTP服务器,然后将其移动到C:\WexflowTesting\Sent\文件夹。
首先,FilesLoader任务加载文件C:\WexflowTesting\file1.txt,然后Ftp任务加载该文件并将其上传到FTP服务器。最后,FilesMover任务将该文件移动到C:\WexflowTesting\Sent\文件夹。
按照惯例,要执行的第一个任务的父任务ID必须始终为-1。此工作流的执行图将按以下顺序执行任务:
但是,如果执行图修改如下:
任务将按如下方式执行:
如果执行图修改如下:
任务将按如下方式执行:
执行图中禁止两件事:
这是一个无限循环的例子:
以下是并行任务的示例:
流程图工作流是在其执行图中包含至少一个流程图节点(If / While / Switch)的工作流。流程图节点将流程图任务和一组任务按顺序逐个执行作为输入。可以通过修改流程图节点的执行图来改变任务执行的顺序。
以下工作流是由文件file.trigger触发的流程图工作流。如果在文件系统上找到文件file.trigger,则此工作流程将文件file1.txt上载到FTP服务器,然后它将通知客户上载成功。否则,如果在文件系统上找不到触发器file.trigger,则工作流将通知客户上载失败。
按照惯例,在
您可以在执行图中的任何位置添加If流程图节点。此外,您可以根据需要添加。您也可以在事件节点OnSuccess,OnWarning和OnError中添加它们。
一个If可以在一个If,一个While和一个Switch里面(即嵌套使用)。
此工作流由文件file.trigger触发。当文件file.trigger存在时,此工作流将文件file1.txt上传到FTP服务器然后它将通知客户然后它将等待2天然后它将再次启动。
按照惯例,要在
您可以在执行图中的任何位置添加While 流程图节点。此外,您可以根据需要添加。您也可以在事件节点OnSuccess,OnWarning和OnError中添加它们。
一个 While可以在一个 While,一个If和一个Switch中。
此工作流程每24小时启动一次。周一,它将文件上传到FTP服务器,并在周三通知客户。
按照惯例,要在Case/Default节点中执行的第一个任务的父任务标识必须始终为-1。
您可以在执行图中的任何位置添加Switch流程图节点。此外,您可以根据需要添加。您也可以在事件节点OnSuccess,OnWarning和OnError中添加它们。
一个 Switch可以在一个 While,一个 If和一个Switch中。
在工作流完成其工作后,其最终结果是成功、或警告或错误。如果其最终结果成功,则触发OnSuccess事件。如果其最终结果是警告,则会触发OnWarning事件。如果其最终结果是错误,则触发OnError事件。事件包含要按顺序逐个执行的一组任务和/或流程图节点。可以通过修改事件的执行图来改变任务和/或流程图节点的执行顺序。
此工作流将file1.txt上载到FTP服务器,然后在成功的情况下通知客户。
流程图事件节点
这些是简单而基本的工作流程,可以让您了解如何制作自己的工作流程。但是,如果您在工作流程中涉及多个系统,应用程序和自动化,则工作流程可能会非常有趣。
自定义任务是工作流引擎中必须的,允许系统和应用程序进行交互。
例如,要创建自定义任务MyTask,您需要按以下步骤操作:
PM> Install-Package Wexflow
3.创建一个实现抽象类Wexflow.Core.Task的公共类MyTask。
Wexflow.Tasks.MyTask 代码应如下所示:
using System.Threading;
using System.Xml.Linq;
using Wexflow.Core;
namespace Wexflow.Tasks.MyTask
{
public class MyTask : Task
{
public MyTask(XElement xe, Workflow wf) : base(xe, wf)
{
// Task settings goes here
}
public override TaskStatus Run()
{
try
{
// Task logic goes here
return new TaskStatus(Status.Success);
}
catch (ThreadAbortException)
{
throw;
}
}
}
}
每个任务在完成执行其作业时返回一个TaskStatus对象。TaskStatus由以下元素组成:
public Status Status { get; set; }
public bool Condition { get; set; }
public string SwitchValue { get; set; }
该Status可以是下列条件之一:
public enum Status
{
Success,
Warning,
Error
}
例如,如果任务对文件集合执行操作,并且如果此操作对所有文件成功,那么它的Status应该是Success。否则,如果此操作对某些文件成功而对其他文件失败则Status应该是Warning。否则,如果此操作对所有文件都失败,那么它Status应该是Error。
该Condition属性专为流程图任务而设计。除了任务的Status之外,流程图任务在执行其操作后返回true或false。
顺序任务的Condition属性应始终设置为false。
SwitchValue被设计为由Switch流程图节点使用。如果在SwitchValue属性中设置值并在Switch流程图节点中使用此任务,则将执行与该值对应的大小写。否则,如果Default设置了大小写,它将被执行。
您可以使用适合您需要的TaskStatus构造函数。
要检索设置,您可以使用以下方法:
string settingValue = this.GetSetting("settingName");
string settingValue = this.GetSetting("settingName", defaultValue);
string[] settingValues = this.GetSettings("settingName");
要通过selectFiles设置选项选择正在运行的工作流实例加载的文件,您可以按如下方式执行此操作:
FileInf[] files = this.SelectFiles();
要通过selectEntities设置选项选择正在运行的工作流实例加载的实体,可以按如下方式执行:
Entity[] entities = this.SelectEntities();
在处理从数据库或Web服务操作对象的自定义任务时,Entity类可能非常有用。
要在任务中加载文件,可以按如下方式执行:
this.Files.Add(new FileInf(path, this.Id));
要在任务中加载实体,可以按如下方式执行:
this.Entities.Add(myEntity);
最后,如果您完成了自定义任务的编码,请编译类库项目并将程序集Wexflow.Tasks.MyTask.dll复制到C:\Program Files\Wexflow\或C:\Wexflow\Tasks\中。可以通过C:\Wexflow\Wexflow.xml配置文件中的tasksFolder设置来配置C:\Wexflow\Tasks\ 文件夹的路径。
然后,您可以按如下方式使用自定义任务:
就这样完成了。这就是开始编写自己的自定义任务所需要知道的所有事情。
要测试自定义任务,请创建一个新工作流(新XML文件)并将自定义任务的配置放在其中,如下所示:
然后,将XML文件放在C:\Wexflow\Workflows\中。
然后,工作流将显示在Wexflow Manager的工作流列表中。然后你可以从那里启动它。
Task类可以使用以下方法进行日志记录:
public void Info(string msg);
public void InfoFormat(string msg, params object[] args);
public void Debug(string msg);
public void DebugFormat(string msg, params object[] args);
public void Error(string msg);
public void ErrorFormat(string msg, params object[] args);
public void Error(string msg, Exception e);
public void ErrorFormat(string msg, Exception e, params object[] args);
文件可以通过调用方法Add或AddRange加载到任务中:
this.Files.Add(myFile);
this.Files.AddRange(myFiles);
然后,可以通过其任务ID在其他任务中选择加载的文件,如下所示:
要通过selectFiles设置选项选择正在运行的工作流实例加载的文件,您可以按如下方式执行此操作:
FileInf[] files = this.SelectFiles();
实体是一个具有任务的Id作为属性抽象类:
namespace Wexflow.Core
{
public abstract class Entity
{
public int TaskId { get; set; }
}
}
实体类被设计为由其他类继承,例如从数据库或Web服务或API或其他任何东西检索的对象。然后,这些对象可以通过调用方法Add或AddRange加载到任务中:
this.Entities.Add(myEntity);
this.Entities.AddRange(myEntities);
然后,可以通过其任务ID在其他任务中选择加载的实体,如下所示:
实体旨在用于自定义任务。
要通过selectEntities设置选项选择正在运行的工作流实例加载的实体,可以按如下方式执行:
Entity[] entities = this.SelectEntities();
在处理从数据库或Web服务操作对象的自定义任务时,Entity类非常有用。
任务包含一个Hashtable,可用作它们之间的共享内存。
要将对象添加到Hashtable,只需按以下步骤操作:
this.Hashtable.Add("myKey", myObject);
要从Hashtable中检索对象,只需按以下步骤操作:
var myObject = this.Hashtable["myKey"];
要从Hashtable中删除对象,只需按以下步骤操作:
this.Hashtable.Remove("myKey");
要使您的自定义任务MyTask出现在设计器的下拉列表中,只需打开文件C:\Wexflow\TasksNames.json并在其中添加“MyTask”,如下所示:
[
...
"MyTask"
]
您还必须通过打开文件C:\Wexflow\TasksSettings.json并添加自定义设置来添加设置,如下所示:
{
...
"MyTask": ["settingName"]
}
这就完成了。MyTask将显示在设计器下拉列表中,选中时它的设置也会显示出来。
要调试自定义任务,可以使用日志记录。
您还可以克隆此Wexflow的存储库并在Visual Studio中打开Wexflow.vs2017.sln或Wexflow.vs2010.sln,并按照这些指南调试Wexflow服务器。然后,您可以在解决方案中创建自定义任务并进行调试。当然,要调试它,你必须按如下方式进行:
要调试Wexflow,请执行以下操作:
这就完成了。我希望你喜欢阅读这篇文章。如果您有任何改进Wexflow的想法,或者如果您遇到任何问题或想要为此项目做出贡献,请在评论或GitHub中告诉我。
以下是Wexflow使用的库列表:
原文地址:https://www.codeproject.com/Articles/1164009/Wexflow-Open-source-workflow-engine-in-Csharp