本文整理匯總了C#中Slickflow.Engine.Service.WorkflowService.GetNextActivityTree方法的典型用法代碼示例。如果您正苦於以下問題:C# WorkflowService.GetNextActivityTree方法的具體用法?C# WorkflowService.GetNextActivityTree怎麽用?C# WorkflowService.GetNextActivityTree使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類Slickflow.Engine.Service.WorkflowService
的用法示例。
在下文中一共展示了WorkflowService.GetNextActivityTree方法的13個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的C#代碼示例。
示例1: btnMade_Click
/// <summary>
/// 生產節點
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnMade_Click(object sender, EventArgs e)
{
WfAppRunner appRunner = new WfAppRunner();
appRunner.ProcessGUID = process_guid;
appRunner.AppInstanceID = application_instance_id;
appRunner.AppName = application_name;
appRunner.UserID = per_dict["limu"];
appRunner.UserName = "limu";
var wfService = new WorkflowService();
var nextSteps = wfService.GetNextActivityTree(appRunner);
if (nextSteps != null)
{
//構造下一步辦理人的信息
appRunner.NextActivityPerformers = CreateNextActivityPerformers(nextSteps);
var r2 = wfService.RunProcessApp(appRunner);
var msg2 = string.Format("執行【生產】:{0}, {1}\r\n", r2.Status, r2.Message);
WriteText(msg2);
if (r2.Status == WfExecutedStatus.Success)
{
WriteText(string.Format("任務已經發送到下一節點:{0}\r\n\r\n", nextSteps[0].ActivityName));
}
}
else
{
WriteText("您當前沒有辦理任務!\r\n");
}
}
示例2: btnPrintOrder_Click
/// <summary>
/// 打單節點
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnPrintOrder_Click(object sender, EventArgs e)
{
WfAppRunner appRunner = new WfAppRunner();
appRunner.ProcessGUID = process_guid;
appRunner.AppInstanceID = application_instance_id;
appRunner.AppName = application_name;
appRunner.UserID = per_dict["yiran"];
appRunner.UserName = "yiran";
//先啟動流程
var wfService = new WorkflowService();
var r1 = wfService.StartProcess(appRunner);
var msg = string.Format("生產訂單流程開始:{0}, {1}\r\n", r1.Status, r1.Message);
WriteText(msg);
if (r1.Status == WfExecutedStatus.Success)
{
//打單環節加入條件,運行流程
var cond = new Dictionary<string, string>();
cond["CanUseStock"] = chkStock.Checked.ToString().ToLower();
cond["IsHavingWeight"] = chkWeight.Checked.ToString().ToLower();
appRunner.Conditions = cond;
string message = string.Empty;
var nextSteps = wfService.GetNextActivityTree(appRunner, cond);
if (nextSteps != null)
{
appRunner.NextActivityPerformers = CreateNextActivityPerformers(nextSteps);
var r2 = wfService.RunProcessApp(appRunner);
message = r2.Message;
WriteText(string.Format("執行【打單】: {0}, {1}\r\n", r2.Status, r2.Message));
if (r2.Status == WfExecutedStatus.Success)
{
WriteText(string.Format("任務已經發送到下一節點:{0}\r\n\r\n", nextSteps[0].ActivityName));
}
}
else
{
message = "下一步節點不匹配!";
WriteText(string.Format("{0}\r\n", message));
}
}
}
示例3: QueryNextStep
public ResponseResult<List<NodeView>> QueryNextStep(WfAppRunner runner)
{
var result = ResponseResult<List<NodeView>>.Default();
try
{
var wfservice = new WorkflowService();
var nodeViewList = wfservice.GetNextActivityTree(runner).ToList<NodeView>();
result = ResponseResult<List<NodeView>>.Success(nodeViewList, "獲取流程下一步信息成功!");
}
catch(System.Exception ex)
{
result = ResponseResult<List<NodeView>>.Error(string.Format(
" 請確認角色身份是否切換?! {0}",
ex.Message));
}
return result;
}
示例4: WfAppRunner
private void btn倉庫簽字_Click(object sender, EventArgs e)
{
WfAppRunner appRunner = new WfAppRunner();
appRunner.ProcessGUID = process_guid;
appRunner.AppInstanceID = application_instance_id;
//第一步任務承擔者,登錄後要找到自己的任務
appRunner.AppName = "officeIn";
appRunner.UserID = "1";
appRunner.UserName = "user1";
IWorkflowService wfService = new WorkflowService();
//外部變量條件
Dictionary<string, string> dictCondition = new Dictionary<string, string>();
dictCondition.Add("surplus", cBoxSurplus.Text);
appRunner.Conditions = dictCondition;
//動態獲取下一跳轉後的節點
var nodeViewList = wfService.GetNextActivityTree(appRunner,dictCondition);
//指定對象執行者
PerformerList list3 = new PerformerList();
list3.Add(new Performer("3", "user3"));
PerformerList list4 = new PerformerList();
list4.Add(new Performer("4", "user4"));
Dictionary<String, PerformerList> dictPerformer = new Dictionary<String, PerformerList>();
int i = 3;
foreach (NodeView nv in nodeViewList)
{
if (i==3)
dictPerformer.Add(nv.ActivityGUID, list3);
else
dictPerformer.Add(nv.ActivityGUID, list4);
i ++;
}
appRunner.NextActivityPerformers = dictPerformer;
var result = wfService.RunProcessApp(appRunner);
var msg = string.Format("流程運行結果:{0}\r\n{1}\r\n", result.Status, result.Message);
tBoxResult.Text += msg;
}
示例5: RunProcess
/// <summary>
/// 工作流運行
/// </summary>
/// <param name="session"></param>
/// <param name="runner"></param>
/// <returns></returns>
public WfExecutedResult RunProcess(IDbSession session, WfAppRunner runner, IDictionary<string, string> conditions = null)
{
var result = new WfExecutedResult();
var wfService = new WorkflowService();
var nodeViewList = wfService.GetNextActivityTree(runner, conditions).ToList<NodeView>();
foreach (var node in nodeViewList)
{
var performerList = wfService.GetPerformerList(node); //根據節點角色定義,讀取執行者列表
Dictionary<string, PerformerList> dict = new Dictionary<string, PerformerList>();
dict.Add(node.ActivityGUID, performerList);
runner.NextActivityPerformers = dict;
if (node.IsSkipTo == true)
{
result = wfService.JumpProcess(session.Connection, runner, session.Transaction);
}
else
{
result = wfService.RunProcessApp(session.Connection, runner, session.Transaction);
}
}
return result;
}
示例6: StartProcess
public ResponseResult StartProcess(WfAppRunner starter)
{
IWorkflowService wfService = new WorkflowService();
IDbConnection conn = SessionFactory.CreateConnection();
IDbTransaction trans = null;
try
{
trans = conn.BeginTransaction();
WfExecutedResult result = wfService.StartProcess(conn, starter, trans);
trans.Commit();
int newProcessInstanceID = result.ProcessInstanceIDStarted;
IList<NodeView> nextSteps = wfService.GetNextActivityTree(starter);
if (result.Status == WfExecutedStatus.Success)
{
return ResponseResult.Success();
}
else
{
return ResponseResult.Error(result.Message);
}
}
catch (WorkflowException w)
{
trans.Rollback();
return ResponseResult.Error(w.Message);
}
finally
{
trans.Dispose();
if (conn.State == ConnectionState.Open)
conn.Close();
}
}
示例7: GetNextStepsContainer
public ResponseResult<IList<NodeView>> GetNextStepsContainer(WfAppRunner runner)
{
IWorkflowService wfService = new WorkflowService();
var nodeList = wfService.GetNextActivityTree(runner, null);
return ResponseResult<IList<NodeView>>.Success(nodeList);
}
示例8: GetTaskNextSteps
public ResponseResult<IList<NodeView>> GetTaskNextSteps(int id)
{
IWorkflowService wfService = new WorkflowService();
var nodeList = wfService.GetNextActivityTree(id);
return ResponseResult<IList<NodeView>>.Success(nodeList);
}
示例9: btnSkip_Click
/// <summary>
/// XML節點預定義跳轉
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnSkip_Click(object sender, EventArgs e)
{
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 nodeViewList = wfService.GetNextActivityTree(appRunner);
if (nodeViewList != null && nodeViewList.Count() == 1)
{
var nodeView = nodeViewList[0];
if (nodeView.IsSkipTo == true)
{
//下一步執行人
PerformerList list = new PerformerList();
Performer p = new Performer("1", "admin");//下一步人ID,Name
list.Add(p);
Dictionary<String, PerformerList> dict = new Dictionary<String, PerformerList>();
dict.Add(nodeView.ActivityGUID, list); //nodeView.ID 下一步節點的標識ID
appRunner.NextActivityPerformers = dict;
var result = wfService.JumpProcess(appRunner);
var msg = string.Format("流程跳轉結果:{0}\r\n", result.Status);
textBox1.Text += msg;
}
}
}
示例10: InitStepMember
/// <summary>
///
/// </summary>
protected void InitStepMember()
{
string strNodes = string.Empty;
//流程定義的GUID
string flowGuid = Request.QueryString["ProcessGUID"] == null ? "" : Request.QueryString["ProcessGUID"].ToString();
string Step = Request.QueryString["Step"] == null ? "" : Request.QueryString["Step"].ToString();
if (string.IsNullOrEmpty(flowGuid) || string.IsNullOrEmpty(Step))
{
base.RegisterStartupScript("", "<script>alert('流程GUID為空');</script>");
}
else
{
List<ZTreeEntity> zTreeEntityList = new List<ZTreeEntity>();
String processGUID = flowGuid;
IWorkflowService service = new WorkflowService();
switch (Step)
{
case "start"://流程第一步選擇
ActivityEntity firstActivity = service.GetFirstActivity(processGUID, string.Empty);
String firstActivityGUID = firstActivity.ActivityGUID;
string conditions = Request.QueryString["condition"] == null ? "" : Request.QueryString["condition"].ToString();
IList<NodeView> nextNodes = service.GetNextActivity(processGUID, string.Empty, firstActivityGUID, GetCondition(conditions));
if (nextNodes != null)
{
if (nextNodes != null)
{
ZTreeEntity zTreeEntity = null;
foreach (NodeView item in nextNodes)
{
zTreeEntity = new ZTreeEntity();
zTreeEntity.id = string.Format("step[{0}]", item.ActivityGUID);
zTreeEntity.pId = "0";
zTreeEntity.name = item.ActivityName;
zTreeEntity.nocheck = false;
zTreeEntityList.Add(zTreeEntity);
DataTable dt = GetUsers(item.Roles);
foreach (DataRow dr in dt.Rows)
{
zTreeEntity = new ZTreeEntity();
zTreeEntity.id = string.Format("step[{0}]member[{1}]", item.ActivityGUID, dr["ID"].ToString());
zTreeEntity.pId = string.Format("step[{0}]", item.ActivityGUID);
zTreeEntity.name = dr["UserName"].ToString();
zTreeEntity.nocheck = false;
zTreeEntityList.Add(zTreeEntity);
}
}
}
}
else
{
LiteralMSG.Text = "當前沒有需要您辦理的步驟";
}
break;
case "task":
try
{
if (LoginUserID > 0)
{
string condition = Request.QueryString["condition"] == null ? "" : Request.QueryString["condition"].ToString();
string instanceId = Request.QueryString["instanceId"] == null ? string.Empty : Request.QueryString["instanceId"].ToString();
WfAppRunner runner = new WfAppRunner();
runner.AppInstanceID = instanceId;
runner.ProcessGUID = processGUID;
runner.UserID = this.LoginUserID.ToString();
hiddenIsSelectMember.Value = "true";
IList<NodeView> NodeViewList = service.GetNextActivityTree(runner, GetCondition(condition));
if (NodeViewList != null)
{
ZTreeEntity zTreeEntity = null;
foreach (NodeView item in NodeViewList)
{
zTreeEntity = new ZTreeEntity();
zTreeEntity.id = string.Format("step[{0}]", item.ActivityGUID);
zTreeEntity.pId = "0";
zTreeEntity.name = item.ActivityName;
zTreeEntityList.Add(zTreeEntity);
DataTable dt = GetUsers(item.Roles);
foreach (DataRow dr in dt.Rows)
{
zTreeEntity = new ZTreeEntity();
zTreeEntity.id = string.Format("step[{0}]member[{1}]", item.ActivityGUID, dr["ID"].ToString());
zTreeEntity.pId = string.Format("step[{0}]", item.ActivityGUID);
zTreeEntity.name = dr["UserName"].ToString();
zTreeEntity.nocheck = false;
zTreeEntityList.Add(zTreeEntity);
}
}
}
else
//.........這裏部分代碼省略.........
示例11: InitStepMember
/// <summary>
///
/// </summary>
protected void InitStepMember()
{
//流程定義的GUID
string flowGuid = Request.QueryString["ProcessGUID"] == null ? "" : Request.QueryString["ProcessGUID"].ToString();
string Step = Request.QueryString["Step"] == null ? "" : Request.QueryString["Step"].ToString();
if (string.IsNullOrEmpty(flowGuid) || string.IsNullOrEmpty(Step))
{
base.RegisterStartupScript("", "<script>alert('流程GUID為空');</script>");
}
else
{
String processGUID = flowGuid;
IWorkflowService service = new WorkflowService();
switch (Step)
{
case "start"://流程第一步選擇
ActivityEntity firstActivity = service.GetFirstActivity(processGUID);
String firstActivityGUID = firstActivity.ActivityGUID;
string conditions = Request.QueryString["condition"] == null ? "" : Request.QueryString["condition"].ToString();
IList<NodeView> nextNodes = service.GetNextActivity(processGUID, firstActivityGUID, GetCondition(conditions));
if (nextNodes != null)
{
Repeater1.DataSource = nextNodes;
Repeater1.DataBind();
}
else
{
LiteralMSG.Text = "當前沒有需要您辦理的步驟";
}
break;
case "task":
try
{
if (LoginUserID > 0)
{
string condition = Request.QueryString["condition"] == null ? "" : Request.QueryString["condition"].ToString();
string instanceId = Request.QueryString["instanceId"] == null ? string.Empty : Request.QueryString["instanceId"].ToString();
WfAppRunner runner = new WfAppRunner();
runner.AppInstanceID = instanceId;
runner.ProcessGUID = processGUID;
runner.UserID = this.LoginUserID.ToString();
hiddenIsSelectMember.Value = "true";
IList<NodeView> NodeViewList = service.GetNextActivityTree(runner, GetCondition(condition));
if (NodeViewList != null)
{
Repeater1.DataSource = NodeViewList;
Repeater1.DataBind();
if (NodeViewList.Count == 1)
{
string nextActivityGuid = NodeViewList[0].ActivityGUID;
/*
ActivityEntity activityEntity = service.GetActivityInstance(processGUID, nextActivityGuid);
if (activityEntity.ActivityType == ActivityTypeEnum.EndNode)
{
hiddenIsSelectMember.Value = "false";
}*/
}
}
else
{
LiteralMSG.Text = "當前沒有需要您辦理的步驟";
}
}
}
catch (Exception ex)
{ }
break;
}
}
}
示例12: btnOutput_Click
/// <summary>
/// 輸出節點
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnOutput_Click(object sender, EventArgs e)
{
WfAppRunner appRunner = new WfAppRunner();
appRunner.ProcessGUID = process_guid;
appRunner.AppInstanceID = application_instance_id;
appRunner.AppName = application_name;
appRunner.UserID = per_dict["andun"];
appRunner.UserName = "andun";
var wfService = new WorkflowService();
var nextSteps = wfService.GetNextActivityTree(appRunner);
if (nextSteps != null)
{
//構造下一步辦理人的信息
string msg2 = string.Empty;
foreach (NodeView nodeView in nextSteps)
{
//當前用例隻有一個節點能夠向下流轉
appRunner.NextActivityPerformers = CreateNextActivityPerformers(nodeView);
if (nodeView.IsSkipTo == true)
{
var j2 = wfService.JumpProcess(appRunner);
msg2 = string.Format("執行【輸出】並跳轉:{0}, {1}\r\n", j2.Status, j2.Message);
WriteText(msg2);
if (j2.Status == WfExecutedStatus.Success)
{
WriteText(string.Format("任務已經發送到下一節點:{0}\r\n\r\n", nodeView.ActivityName));
}
}
else
{
var r2 = wfService.RunProcessApp(appRunner);
msg2 = string.Format("執行【輸出】:{0}\r\n", r2.Message);
WriteText(msg2);
if (r2.Status == WfExecutedStatus.Success)
{
WriteText(string.Format("任務已經發送到下一節點:{0}\r\n", nodeView.ActivityName));
}
}
}
}
else
{
WriteText("您當前沒有辦理任務!\r\n");
}
}
示例13: Approval
public async Task<ActionResult> Approval(string type = "agree", string processGUID = "", int instanceId = 0, double days = 0)
{
var resolveRequest = HttpContext.Request;
resolveRequest.InputStream.Seek(0, System.IO.SeekOrigin.Begin);
string jsonString = new System.IO.StreamReader(resolveRequest.InputStream).ReadToEnd();
try
{
IWorkflowService service = new WorkflowService();
WfAppRunner runner = new WfAppRunner();
runner.AppInstanceID = instanceId.ToString();
runner.ProcessGUID = processGUID;
runner.UserID = User.Identity.GetUserId();
IList<NodeView> NodeViewList = service.GetNextActivityTree(runner, GetCondition("days-" + days));
var leave = JsonConvert.DeserializeObject<LeaveEntity>(jsonString);
leave.ID = instanceId;
//調用流程
WfAppRunner initiator = new WfAppRunner();
initiator.AppName = "請假流程";
initiator.AppInstanceID = instanceId.ToString();
initiator.ProcessGUID = processGUID;
initiator.UserID = User.Identity.GetUserId();
initiator.UserName = User.Identity.GetUserName();
initiator.Conditions = GetCondition(string.Format("days-{0}", days)); //後續節點不用傳入條件表達式
//獲取下一步審批人信息
//下一步角色ID審批者
PerformerList pList = new PerformerList();
if (NodeViewList[0].Roles.Count > 0)
{
string outerId = NodeViewList[0].Roles[0].ID.ToString();
//這裏隻取第一個審批者,WebDemo 是彈窗形式選擇
//審批用戶id
IEnumerable<int> userId = RoleManager.FindById(Convert.ToInt32(outerId)).Users.Select(t => t.UserId);
ApplicationUser user = await UserManager.FindByIdAsync(Convert.ToInt32(userId.ToList()[0]));
//送往下一步
pList.Add(new Performer(user.Id.ToString(), user.RealName));
}
initiator.NextActivityPerformers = new Dictionary<String, PerformerList>();
initiator.NextActivityPerformers.Add(NodeViewList[0].ActivityGUID, pList);
WfExecutedResult runAppResult = service.RunProcessApp(initiator);
if (runAppResult.Status != WfExecutedStatus.Success)
{
}
ProcessEntity processEntity = service.GetProcessById(processGUID);
if (processEntity != null)
{
ActivityInstanceEntity activityInstanceEntity = service.GetActivityInstance(instanceId);
if (activityInstanceEntity != null)
{
//CurrentActivityText = activityInstanceEntity.ActivityName;
}
}
new WorkFlowManager().UpdateHrsLeave(leave);
}
catch (Exception ex)
{
return Json(new
{
success = false,
message = ex.Message
});
}
return Json(new
{
success = true,
message = "執行成功"
});
}