JNPF实现了界面化流程的建模,使得流程建模变得简单可操作,用户通过拖、拉、点、拽即可快速实现流程的建模。
完成基础信息设置
根据企业的需求创建工作流程设计,工作流程设计根据事项,按不同类型进行自定义表单或者系统表单的配置,创建后依次输入流程表单的基础信息。
可视化表单拖拽
自定义表单从左侧控件区域拖拽或点击控件,根据自己的业务流程设计表单。系统表单的表单字段页面,会根据用户在代码生成前端的字段对应生成。
流程审批设计
提供包括审批节点、条件分支、分流/合流、定时器等多形式流程设计,用户可以根据需求添加相关节点,并在页面右侧进行自定义操作。
using System;
using System.Diagnostics.Tracing;
using System.Linq;
using System.Net.Http;
using var listener = new HttpConsoleListener();
using var hc = new HttpClient();
await hc.GetStringAsync("https://dotnet.microsoft.com/");
sealed class HttpConsoleListener : EventListener
{
protected override void OnEventSourceCreated(EventSource eventSource)
{
if (eventSource.Name == "System.Net.Http")
EnableEvents(eventSource, EventLevel.LogAlways);
}
protected override void OnEventWritten(EventWrittenEventArgs eventData)
{
string? payload =
eventData.Payload is null ? null :
eventData.PayloadNames != null ? string.Join(", ", eventData.PayloadNames.Zip(eventData.Payload, (n, v) => $"{n}={v}")) :
string.Join(", ", eventData.Payload);
Console.WriteLine($"[{eventData.TimeStamp:o}] {eventData.EventName}: {payload}");
}
}
private BenchmarkEventListener _listener;
[GlobalSetup]
public void Setup() => _listener = new BenchmarkEventListener();
[GlobalCleanup]
public void Cleanup() => _listener.Dispose();
[Benchmark]
public void Log()
{
BenchmarkEventSource.Log.NoArgs();
BenchmarkEventSource.Log.MultipleArgs("hello", 6, 0);
}
private sealed class BenchmarkEventListener : EventListener
{
protected override void OnEventSourceCreated(EventSource eventSource)
{
if (eventSource is BenchmarkEventSource)
EnableEvents(eventSource, EventLevel.LogAlways);
}
protected override void OnEventWritten(EventWrittenEventArgs eventData) { }
}
private sealed class BenchmarkEventSource : EventSource
{
public static readonly BenchmarkEventSource Log = new BenchmarkEventSource();
[Event(1)]
public void NoArgs() => WriteEvent(1);
[Event(2)]
public void MultipleArgs(string arg1, int arg2, int arg3) => WriteEvent(2, arg1, arg2, arg3);
}