博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
小试elsa
阅读量:4033 次
发布时间:2019-05-24

本文共 2825 字,大约阅读时间需要 9 分钟。

最近工作需要,在调研BMP产品(开源和商用),重点了解了activiti和它的商业产品Alfresco Process Services,这是java的体系,成熟,完善(三方开源库是java多年开源积累下的最宝贵的财富),出身.neter的我自然就想看看.net世界里有没有类似的产品。于是就找到两篇关于elsa的文章,一篇是善友兄的《》,另一篇国庆兄的《》,于是还专门致电国庆兄了解elsa这个开源框架的状况,国庆兄很细致的给我作了分享和演示(为开源精神,分享精神点赞),感谢

于是我也小试一把elsa,同时也把自己的小心得分享出来.

demo的思路很简单,就是从一个api中请求信息,显示出来,这里用到两个activity:一个SendHttpRequest,一个Writeline。

定义webapi服务:

namespace APIDemo.Controllers{    [ApiController]    [Route("[controller]")]    public class HomeController : ControllerBase    {        private readonly ILogger
 _logger; public HomeController(ILogger
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返回格式              .AddScoped
()              //注入httpclient工厂 .AddHttpClient() .AddActivity
() .AddActivity
() .BuildServiceProvider(); var invoker = services.GetService
(); await invoker.StartAsync
(); Console.WriteLine("回车结束"); Console.ReadLine(); } }    /// 
/// 定义工作流两个activity,一个是请求webapi,一个是显示请求结果 /// public class PersonHandleWorkflow : IWorkflow { public void Build(IWorkflowBuilder builder) { builder .StartWith
(RequestAPI, "http5001") .Then
(ShowMessage);        } void ShowMessage(WriteLine write) { //用javascript脚本来处理返回信息 write.TextExpression = new JavaScriptExpression
("'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 WorkflowExpression
(LiteralEvaluator.SyntaxName, "https://localhost:5001/home"); } }}

转载地址:http://bbudi.baihongyu.com/

你可能感兴趣的文章
Android数据存储之SQLite
查看>>
常用WebService(逐渐更新)
查看>>
MySQL备份和恢复(Windows)
查看>>
Android所有权限说明
查看>>
Git入门
查看>>
Android去掉标题栏
查看>>
如何把App放在服务器上供用户下载
查看>>
Android widget之PopupWindow
查看>>
SQLPlus常用操作
查看>>
Android四大组件之Activity
查看>>
Markdown语法介绍
查看>>
Android之AsyncTask的使用
查看>>
Android之WebView
查看>>
IMSI与IMEI的区别
查看>>
Android SDK代理资源收集
查看>>
收起虚拟键盘
查看>>
AndroidStudio常用快捷键(持续更新,用一个记一个)
查看>>
Android获取本地图片、视频缩略图
查看>>
Android实现沉浸式状态栏
查看>>
AbAndroidStudio报错“unable to create debug bridge:ubable to start adb server”
查看>>