阅读:2837
回复:5
|
[已解决]外围系统触发BPM流程string WorkItemID = Guid.NewGuid().ToString(); BPMReference.WorkItemServiceSoapClient client = new BPMReference.WorkItemServiceSoapClient(); bool result = client.CreateUnFinishedWorkItem(Guid.NewGuid().ToString(), "d", "YGGZZB", WorkItemID, "YGGZZB", "d", "手工", "XX", "XX", DateTime.Now, 1, false, false, "http://172.16.21.119:8010/portal/Sheets/DefaultEngine/YGGZZB/SYGGZZB.aspx?Mode=Work&WorkItemID=" + WorkItemID); /// <summary> /// 应用系统推送待办任务至统一审核平台 /// </summary> /// <param name="InstanceId">流程实例编码:GUID</param> /// <param name="SequenceNo">流水号</param> /// <param name="SchemaCode">BPM流程编码:BizObjectSchemaCode</param> /// <param name="WorkItemID">待办任务在应用系统中的唯一标示</param> /// <param name="WorkflowCode">BPM流程编码:WorkflowCode</param> /// <param name="InstanceName">流程实例名称:例如张三的年假审批</param> /// <param name="ActivityName">环节名称:例如领导审批</param> /// <param name="Originator">发起人账号:流程发起人的邮箱账号</param> /// <param name="Participant">当前任务处理人的邮箱账号</param> /// <param name="ReceiveTime">任务接收时间</param> /// <param name="PriorityType">待办的优先级</param> /// <param name="ItemType">待办/待阅,0是待办/1是待阅</param> /// <param name="AllowReject">是否允许驳回</param> /// <param name="MobileProcessing">是否允许支持移动办公审批</param> /// <param name="Url">应用系统打开当前工作任务的URL</param> /// <returns>返回待办是否推送成功</returns> [WebMethod(Description = "应用系统往统一工作平台推送待办接口")] public bool CreateUnFinishedWorkItem( string InstanceId, string SequenceNo, string SchemaCode, string WorkItemID, string WorkflowCode, string InstanceName, string ActivityName, string Originator, string Participant, DateTime ReceiveTime, int ItemType, bool AllowReject, bool MobileProcessing, string Url) { Unit[] units = this.Engine.Organization.GetUnitsByCodes(new string[] { Originator, Participant }); string originatorUser = string.Empty; string participantUser = string.Empty; string orgUnit = string.Empty; if (units == null) { throw new Exception("当前任务参与人在BPM中不存在!"); } foreach (Unit unit in units) { if (unit.Code == Participant) { participantUser = unit.ObjectID; } if (unit.Code == Originator) { originatorUser = unit.ObjectID; orgUnit = ((OThinker.Organization.User)unit).ParentID; } } if (participantUser == string.Empty) { throw new Exception("当前任务参与人的箱账号不存在!"); } string endDate = "1753-01-01"; string sql = @"INSERT INTO OT_WORKITEM (ObjectID , InstanceId , BizObjectSchemaCode , SourceWorkItemID , WorkflowCode , ActivityDisplayName , DisplayName , Originator , OrgUnit , Participant , ReceiveTime , StartTime , FinishTime , PlanFinishTime , Priority , ItemType , ItemFlag , ItemSummary , MobileProcessing , State , WorkflowVersion , ParentIndex) VALUES ('" + Guid.NewGuid().ToString().ToLower() + @"' , '" + InstanceId + @"' , '" + SchemaCode + @"' , '" + ReplaceValue(WorkItemID) + @"' , '" + ReplaceValue(WorkflowCode) + @"' , '" + ReplaceValue(ActivityName) + @"' , '" + ReplaceValue(ActivityName) + @"' , '" + originatorUser + @"' , '" + orgUnit + @"' , '" + participantUser + @"' , '" + ReceiveTime + @"' , '" + endDate + @"' , '" + endDate + @"' , '" + endDate + @"' , '2' , '" + ItemType + @"' , '" + (AllowReject ? 1 : 0).ToString() + @"' , '" + ReplaceValue(Url) + @"' , '" + (MobileProcessing ? 1 : 0).ToString() + @"' , 0 , 1 , 1 )"; CreateWorkFlow(InstanceId, SequenceNo, InstanceName, originatorUser, orgUnit, WorkflowCode, SchemaCode); return this.Engine.Query.CommandFactory.CreateCommand().ExecuteNonQuery(sql) > 0; } private bool CreateWorkFlow(string ObjectID, string SequenceNo, string InstanceName, string Originator, string OrgUnit, string WorkflowCode, string BizObjectSchemaCode) { string endDate = "1753-01-01"; string sql = @"IF NOT EXISTS ( SELECT 1 FROM OT_InstanceContext WHERE ObjectID = '" + ObjectID + @"' ) INSERT INTO OT_InstanceContext ( ObjectID , SequenceNo , MessageEmergency , InstanceName , Originator , OrgUnit , WorkflowCode , WorkflowVersion , BizObjectSchemaCode , BizObjectId , State , CreatedTime , StartTime , FinishTime , PlanFinishTime , EstimatedFinishTime , LastActiveTime ) VALUES ( '" + ObjectID + @"' , '" + SequenceNo + @"' , '2' , '" + InstanceName + @"' , '" + Originator + @"' , '" + OrgUnit + @"' , '" + WorkflowCode + @"' , '1' , '" + BizObjectSchemaCode + @"' , '' , '2' , '" + endDate + @"' , '" + endDate + @"' , '" + endDate + @"' , '" + endDate + @"' , '" + endDate + @"' , '" + endDate + @"' )"; return Engine.Query.CommandFactory.CreateCommand().ExecuteNonQuery(sql) > 0; } } 执行成功后,打不开实例表单 图片:1488863727(1).jpg ![]() 图片:1488863677(1).jpg ![]() |
1楼#
发布于:2017-03-07 15:05
帖内置顶 – – 2017-03-13 18:30
rancho:现成的接口在哪个地方?求助!回到原帖参考这个链接 http://bbs.h3bpm.com/read.php?tid=1438&fid=30&page=1#8430 或者这个文件中的写法 Authine\H3 BPM\Portal\WebServices\BPMService.asmx |
|
2楼#
发布于:2017-03-07 13:23
系统有现成流程发起接口,为什么用插入数据库的方法?
如果一定要直接修改后台数据库,请插入后刷新对应实例的缓存。 AppUtility.Engine.BizObjectManager.ReloadBizObject(ActionContext.SchemaCode, ActionContext.BizObjectID); |
|
4楼#
发布于:2017-03-07 14:03
|
|
|
5楼#
发布于:2017-03-07 15:05
rancho:现成的接口在哪个地方?求助!回到原帖参考这个链接 http://bbs.h3bpm.com/read.php?tid=1438&fid=30&page=1#8430 或者这个文件中的写法 Authine\H3 BPM\Portal\WebServices\BPMService.asmx |
|
6楼#
发布于:2017-03-07 15:20
Authine\H3 BPM\Portal\WebServices\BPMService.asmx有现成的发起流程的方法
|
|