阅读:3799
回复:5
|
关于主流程触发子流程
有谁知道通过主流程的子表有N行数据发起N个子流程的功能吗。子流程的发起人只能是主流程的发起人。求案例。求讲解
|
1楼#
发布于:2017-05-08 09:35
这种场景不能用系统的父子流程功能实现,只能通过代码去发起其他流程
|
|
2楼#
发布于:2017-05-08 10:44
|
|
3楼#
发布于:2017-05-11 13:36
问题已解决。
先拟清思路。从数据库取要下发到子流程的数据。因为主要根据子表N行列数发起N行流程。所以要关联子表。联查出N行数据。然后循环这N行数据。每循环一次调用接口发起流程。直到循环结束。(要传入发起子流程的参数。我这里是主流程的发起人既子流程的发起人) public bool lista(string instanceId,string userid) { //WebReference.BPMService bpmService = new WebReference.BPMService(); CommandHelp bpmService = new CommandHelp(); Organization.Unit unit = this.Engine.Organization.GetUnit(userid); string sql = string.Format(@"select a.SQR,a.SQBM,a.SQRLXFS,a.TBQY,a.BH,a.SQSJ,a.XMQW, a.QYDJR,a.LXFS,a.QYTZFZR,a.XMHXFZR,a.XMDW,a.XMBM,a.SM,a.instanceId, b.ZYBMJMC,b.ZYSQDJ,b.ZYSSBM,b.SFFQZLC, b.zyzzrr,b.zybmld from I_BPM a left join I_SQZYQK b on b.parentobjectid=a.objectid where a.instanceId='{0}'", instanceId); System.Data.DataTable dt = DBHelper.ExecuteTableSql(sql); string zhubiaoid = null; //添加主表数据 if (dt != null && dt.Rows.Count > 0) { //zhubiaoid = dt.Rows[0]["Objectid"] + string.Empty; foreach (DataRow dr in dt.Rows) { //BPMWebReference.DataItemParam[] List = new BPMWebReference.DataItemParam[dt.Columns.Count]; DataItemParam[] List = new DataItemParam[dt.Columns.Count]; for (int i = 0; i < dt.Columns.Count; i++) { //BPMWebReference.DataItemParam item = new BPMWebReference.DataItemParam(); DataItemParam item = new DataItemParam(); item.ItemName = dt.Columns.ColumnName; item.ItemValue = dr[dt.Columns.ColumnName];//dt.Rows[0][dt.Columns.ColumnName + string.Empty]; List = item; } bpmService.StartWorkflow("CCZLCSP", unit.Code, false, List.ToList()); //BPMServiceResult res= bpm.StartWorkflow("TaskReception", this.UserValidator.UserCode, false, list); } } return true; } |
|
4楼#
发布于:2017-12-06 15:21
|
|
5楼#
发布于:2018-04-17 15:34
|
|