https://github.com/besley/Slickflow
https://www.cnblogs.com/slickflow/tag/.net%E5%B7%A5%E4%BD%9C%E6%B5%81/
-
1) 流程模型定義說明
流程(Process):
是企業組織對業務過程的工作流語言描述。一個完整的流程包括開始節點,中間節點和結束節點。活動(Activity):
對每一個工作項節點上的內容定義,也包括網關,事件等節點。轉移(Transition):
表示起始節點和到達節點之間的狀態轉移。執行者(Performer):
每一個節點定義的角色和用戶,作為活動的執行主體。 -
2)流程流轉實例數據存儲說明
流程實例(ProcessInstance):
存儲業務過程流轉數據,包括流程標識,業務數據標識和流程發起時間,當前狀態和結束時間等信息。活動實例(ActivityInstance):
存儲每個流程節點的實例信息,包括活動節點的標識,狀態,接收人,辦理時間,結束時間等信息。轉移實例(TransitionInstance):
存儲每條轉移的狀態數據,包括轉移表示,起始節點信息,到達節點信息。任務實例(Tasks)
活動接收和辦理人的信息列表,待辦任務和已辦任務的數據來源。
-
2. 流程服務方法調用圖示
圖2 流程服務接口調用示意
-
流程服務常用的6個API接口具體描述
流程從啟動,運行到最終結束時,需要調用引擎服務API接口。
1) StartProcess()
啟動流程調用此方法,生成流程實例,並置狀態到開始節點之后的任務節點。
2) RunProcessApp()流程運行調用此方法,將當前任務結束,並分發任務給下一步節點的辦理人。
3) JumpProcess()
跳轉到指定的任務節點,有預先指定方式,或運行時動態調用方式。
4) WithdrawProcess()
當前任務節點的上一步節點完成人發現辦理有誤需撤銷,調用此方法,重新回到上一步節點。
5) SendbackProcess()
當前任務辦理人退回任務到上一步執行節點。
6) ReverseProcess()
流程結束后仍需返回,由結束節點前的執行人調用此方法,狀態回到結束前的節點。
- 官網地址:
http://www.slickflow.com
- 網站演示地址:
http://www.slickflow.com/demo/index
- Github 地址:
https://github.com/besley/Slickflow
- Codeplex地址:
http://slickflow.codeplex.com
.NET/.NETCore Workflow Engine With Full Source Code
- .NET, .NET CORE version both supported
Slickflow is an open-source project based on .NET5; It's easy to use engine product into the cross-platform application. - BPMN graphic style process diagram
Slickflow is using BPMN notation to describe process diagram, the Slickflow designer is HTML5 graph editor and user-friendly to business process communication and business analysis. - High performance with Dapper.NET library
Dapper is a simple object mapper for .NET and owns the title of King of Micro ORM in terms of speed and is virtually as fast as using a raw ADO.NET data reader. An ORM is an Object Relational Mapper, which is responsible for mapping between database and programming language. (Ref: https://dapper-tutorial.net/dapper) - Multiple databases supported
Slickflow supports SQLSERVER, ORACLE, MySQL and another database, it implemented by the Dapper.NET extension library. The .net core version using EF core to support different database products. - Workflow patterns supported
1). Sequence
the most frequently process pattern
2). Split/Merge
support and/or gateway such as and/or split, and/or join, together with condition variables on the transition
3). Sub-process
in the main process, a subprocess node can start a new process life cycle.
4). Multi-instance
multiple performers processing a task together by multiple task instances. All performers both compete for their task, then the process can be continued on. There are sequence and parallel pattern, and the percentage or count parameters can be set on it to ensue when can go to the next step.
5). Event interoperation
process instance and activity instance event delegation service, such as process/activity start, execute and complete.
6). Timer
integrated with HangFire library, and with CRON expression supported
7). Email
todo or overdue tasks email notification
8). Withdraw
withdraw the task after just sent out to next step users.
9). Sendback
send back to the previous step user, because of some exceptions.
10). Resend
combined after sendback and re-send the task to original sendback users.
11). Reverse
reverse the process instance alive when completed.
12). Jump
jump the process over by several steps forward or backward.
13). MessageQueue(RabbitMQ)
message publishing and subscribing to implement message throwing and catching.
6. Process Version
the process has version property to upgrade a new definition due to the business process changed.
7. XML Cache
the runtime instance use cache to keep the XML process diagram by an expired duration.
8. Sequence Process Code Style
0). Model
//create a simple sequence process diagram by hand code rather than a HTML designer
var pmb = ProcessModelBuilder.CreateProcess("simple-process-name", "simple-process-code");
var process = pmb.Start("Start")
.Task("Task1")
.Task("Task2")
.End("End")
.Store();
1). Start
//start a new process instance
IWorkflowService wfService = new WorkflowService();
var wfResult = wfService.CreateRunner("10", "jack")
.UseApp("DS-100", "Book-Order", "DS-100-LX")
.UseProcess("PriceProcessCode")
.Start();
2). Run
//run a process instance to next step
IWorkflowService wfService = new WorkflowService();
var wfResult = wfService.CreateRunner("10", "jack")
.UseApp("DS-100", "Book-Order", "DS-100-LX")
.UseProcess("PriceProcessCode")
.NextStepInt("20", "Alice")
.Run();
3). Withdraw
//Withdraw a activity instance to previous step
IWorkflowService wfService = new WorkflowService();
var wfResult = wfService.CreateRunner("10", "Jack")
.UseApp("DS-100", "Book-Order", "DS-100-LX")
.UseProcess("PriceProcessCode")
.OnTask(id) //TaskID
.Withdraw();
4). SendBack
//Sendback a activity instance to previous step
IWorkflowService wfService = new WorkflowService();
var wfResult = wfService.CreateRunner("20", "Alice")
.UseApp("DS-100", "Book-Order", "DS-100-LX")
.UseProcess("PriceProcessCode")
.PrevStepInt()
.OnTask(id) //TaskID
.SendBack();
9. Rich demo projects
WebDemo, MvcDemo, and WinformDemo project are demonstrated for a different type of enterprise information systems.
10. Target
Slickflow is very suitable for software teams or companies who want to integrate workflow engine into their products.
11. Suggestions
Slickflow is suggested to give programmers a flexible way to integrate workflow engine components into their products or customer projects. The programmers can write their own code segments based on the engine component.
12. Open Source Project License
The product is under Slickflow Open Source Project license.
1). Slickflow software must be legally used, and should not be used in violation of the law, morality and other acts that endanger social interests;
2). Non-transferable, non-transferable and indivisible authorization of this software;
3). The source code can be modified to apply Slickflow components in their own projects or products, but Slickflow source code can not be separately encapsulated for sale or distributed to third-party users;
4). The intellectual property rights of Slickflow software shall be protected by law, and no documents such as technical data shall be made public or sold.
13. Commercial license
The enterprise, ultimate and universe version can be provided with a commercial license, technical support and upgrade service.
if you have any further inquiry, please feel free to contact us:
Email: sales@ruochisoft.com
QQ(Author): 47743901
Quick Start Tutorial:
https://github.com/besley/Slickflow/wiki/Slickflow-Quick-Start-Tutorial
Wiki Page:
https://github.com/besley/Slickflow/wiki
CodeProject Articles:
https://www.codeproject.com/Articles/5246528/Slickflow-NET-Core-Open-Source-Workflow-Engine https://www.codeproject.com/Articles/5252483/Slickflow-Coding-Graphic-Model-User-Manual
Slickflow website:
http://www.slickflow.net
http://www.slickflow.com
Demo:
http://www.slickflow.com/demo/index
Designer Demo:
http://demo.slickflow.com/sfd/
Modeler Demo:
http://demo.slickflow.com/sfd/model
Document:
http://www.slickflow.com/wiki/index
Quasar Form Builder
The online dynamic form demo:http://demo.slickflow.com/sqd/
The SlickQua project:http://github.com/besley/slickqua/