阅读:2643 回复: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 上善若水上善若水
rancho
3

帖子

9

跟帖

1244

积分

中级榴莲
中级榴莲
1楼#
发布于:2017-03-07 13:32
现成的接口在哪个地方?求助!
游客

返回顶部