建设工程造价网站,网站如何建立品牌形象,网站logo制作教程,公司做一个网页多少钱最近工作需要#xff0c;在调研BMP产品#xff08;开源和商用#xff09;#xff0c;重点了解了activiti和它的商业产品Alfresco Process Services#xff0c;这是java的体系#xff0c;成熟#xff0c;完善(三方开源库是java多年开源积累下的最宝贵的财富)#xff0c;… 最近工作需要在调研BMP产品开源和商用重点了解了activiti和它的商业产品Alfresco Process Services这是java的体系成熟完善(三方开源库是java多年开源积累下的最宝贵的财富)出身.neter的我自然就想看看.net世界里有没有类似的产品。于是就找到两篇关于elsa的文章一篇是善友兄的《推荐一个很棒的开源工作流elsa-core》另一篇国庆兄的《.NET 5 开源工作流框架elsa技术研究》于是还专门致电国庆兄了解elsa这个开源框架的状况国庆兄很细致的给我作了分享和演示为开源精神分享精神点赞感谢。于是我也小试一把elsa同时也把自己的小心得分享出来.demo的思路很简单就是从一个api中请求信息显示出来这里用到两个activity一个SendHttpRequest一个Writeline。定义webapi服务namespace APIDemo.Controllers
{[ApiController][Route([controller])]public class HomeController : ControllerBase{private readonly ILoggerHomeController _logger;public HomeController(ILoggerHomeController logger){_logger logger;}[HttpGet]public Person GetPerson(){_logger.LogInformation(请求person);return new Person() { ID 100, Name 张三丰收, Age 22, Sex true };}}public class Person{public int ID { get; set; }public string Name { get; set; }public int Age { get; set; }public bool Sex { get; set; }}
}
定义elsa工作流using Elsa.Activities.Console.Activities;
using Elsa.Activities.Http.Activities;
using Elsa.Activities.Http.Parsers;
using Elsa.Activities.Http.Services;
using Elsa.Expressions;
using Elsa.Scripting.JavaScript;
using Elsa.Services;
using Elsa.Services.Models;
using Microsoft.Extensions.DependencyInjection;
using System;
using System.Threading.Tasks;namespace Elsa01
{class Program{async static Task Main(string[] args){Console.WriteLine(回车开始);Console.ReadLine();var services new ServiceCollection().AddElsa()//注入Response返回格式.AddScopedIHttpResponseBodyParser, JsonHttpResponseBodyParser()//注入httpclient工厂.AddHttpClient().AddActivitySendHttpRequest().AddActivityWriteLine().BuildServiceProvider();var invoker services.GetServiceIWorkflowInvoker();await invoker.StartAsyncPersonHandleWorkflow();Console.WriteLine(回车结束);Console.ReadLine();}}/// summary/// 定义工作流两个activity,一个是请求webapi一个是显示请求结果/// /summarypublic class PersonHandleWorkflow : IWorkflow{public void Build(IWorkflowBuilder builder){builder.StartWithSendHttpRequest(RequestAPI, http5001).ThenWriteLine(ShowMessage);}void ShowMessage(WriteLine write){//用javascript脚本来处理返回信息write.TextExpression new JavaScriptExpressionstring(ID:lastResult(http5001).Content[\id\] Name:lastResult(http5001).Content[\name\] Age:lastResult(http5001).Content[\age\]);}void RequestAPI(SendHttpRequest http){//定义http发送参数http.ContentType application/json;http.Method get;http.Url new WorkflowExpressionUri(LiteralEvaluator.SyntaxName, https://localhost:5001/home);}}
}