besley / Slickflow

.NET Open Source Workflow Engine, .NET 开源工作流

Home Page:http://www.slickflow.net

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

關於呼叫WorkflowService.SendBackProcess(WfAppRunner)出錯

ben840691 opened this issue · comments

作者您好
小弟嘗試在Slickflow.Demo(.NET)的網站下嘗試修改
仿造[以下網站]的EXAMPLE #2寫法,呼叫SendBackProcess以嘗試退回流程到上一步
例如:
WfAppRunner appRunner = new WfAppRunner();
appRunner.ProcessGUID = process_guid;
appRunner.AppInstanceID = application_instance_id;
appRunner.AppName = "WallwaOrder";
appRunner.UserID = "13";
appRunner.UserName = "andun";
IWorkflowService wfService = new WorkflowService();
var result = wfService.SendBackProcess(appRunner);
但是經過多次嘗試時都會直接跳錯誤:
Slickflow.Engine\Service\WorkflowService.cs
第1037行附近會出現「Slickflow.Engine.Core.Runtime.WfRuntimeManager.RunningActivityInstance.get 傳回 null」
之後程式就掛掉了
請問按照範例的寫法有錯在哪一步嗎?

[上述網站]:
https://csharp.hotexamples.com/examples/Slickflow.Engine.Service/WorkflowService/SendBackProcess/php-workflowservice-sendbackprocess-method-examples.html

@ben840691 ,您好!
请尝试在appRunner.TaskID属性赋值,然后再运行此方法。

您好

假設以Demo範例中的[請假流程]為例
路天明 送出 一張請假單
觀察資料庫中的[WfTasks]這張表,會出現三筆新資料(3個TaskID)
(以下假設TaskID產生為001、002、003)
其中第一筆的ActivityName=员工提交
後兩筆的ActivityName=部门经理审批

根據上次的回覆
已經將上述三個TaskID都測試過了,結果都還是出現錯誤:
(1)如果登入者為[张恒丰],TaskID寫003或002
會出現「流程退回发生异常!,详细错误:無法插入 NULL 值到資料行 'AssignedToUserID',資料表 'WfDBCommunity.dbo.WfTasks'; 資料行不得有 Null。INSERT 失敗。
陳述式已經結束。」

(2)如果登入者為[张恒丰],TaskID寫002
則會出現「不是当前登录用户的任务,无法退回!」

根據錯誤訊息推測,是不是要湊滿某個appRunner.NextActivityPerformers?
如果是,這個值應該是怎麼湊?
(推測相關的[請假流程]節點有
[开始]
[员工提交]
[部门经理审批]
這三種ActivityGUID
)

您好!

请假表单流转和退回请参考下面的gif的演示demo示例,另外建议可以使用企业版,包括了技术开发资料,方便深入了解引擎核心和高级功能。

We have an approval form(ask for leaving by employee) for the process demo, it is simple for dealing with days variable to route different department manager, we called or-split gateway pattern. We also have completed backward features too, these features are basic function of engine product.

https://github.com/besley/besley.github.io/blob/master/Slickflow/demo/askforleaving-demo.gif

The slcikflow designer page: http://demo.slickflow.com/sfd/
The slickflow tesing page: http://demo.slickflow.com/sfw2/

请根据sfw2网站进行退回操作测试,比如:A(Tom)->B(Jack),退回操作(SendBack),是B(Jack)->A(Tom)。此时,发起退回操作的人员只能是节点B上的任务办理人Jack,而NextActivityPerformers是个[步骤:人员]的字典列表结构,其数据格式就是:[A:Tom]