阅读:2628 回复:5
rancho
3

帖子

9

跟帖

1244

积分

中级榴莲
中级榴莲

[已解决]外围系统触发BPM流程

楼主#
更多 发布于:2017-03-07 13:17

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

最新喜欢:

H3BPMH3BPM 上善若水上善若水
t156965365
46

帖子

688

跟帖

4536

积分

H3 BPM互助团队
H3 BPM互助团队
  • 社区居民
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
t156965365
46

帖子

688

跟帖

4536

积分

H3 BPM互助团队
H3 BPM互助团队
  • 社区居民
2楼#
发布于:2017-03-07 13:23
系统有现成流程发起接口,为什么用插入数据库的方法?
如果一定要直接修改后台数据库,请插入后刷新对应实例的缓存。
AppUtility.Engine.BizObjectManager.ReloadBizObject(ActionContext.SchemaCode, ActionContext.BizObjectID);
rancho
3

帖子

9

跟帖

1244

积分

中级榴莲
中级榴莲
3楼#
发布于:2017-03-07 13:32
现成的接口在哪个地方?求助!
上善若水
17

帖子

1282

跟帖

12345

积分

管理员
管理员
  • 社区居民
4楼#
发布于:2017-03-07 14:03
rancho:现成的接口在哪个地方?求助!回到原帖
帮助手册里面有API接口说明的
H3 BPM 让天下没有难用的流程。全国统一服务热线 :400-889-8625
t156965365
46

帖子

688

跟帖

4536

积分

H3 BPM互助团队
H3 BPM互助团队
  • 社区居民
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
武汉技术支持团队
40

帖子

1181

跟帖

3860

积分

论坛版主
论坛版主
6楼#
发布于:2017-03-07 15:20
Authine\H3 BPM\Portal\WebServices\BPMService.asmx有现成的发起流程的方法
游客

返回顶部