Пример #1
0
 /// <summary>
 /// 活动事件订阅
 /// </summary>
 /// <param name="eventType">活动事件类型</param>
 /// <param name="func">回调方法</param>
 /// <returns>服务类</returns>
 public IWorkflowService Subscribe(EventFireTypeEnum eventType, Func <int, string, IDelegateService, Boolean> func)
 {
     //_wfAppRunner.DelegateEventList.Add(
     //    new KeyValuePair<EventFireTypeEnum, Func<int, string, IDelegateService, bool>>(eventType, func)
     //);
     return(this);
 }
Пример #2
0
 /// <summary>
 /// 活动事件订阅
 /// </summary>
 /// <param name="eventType">活动事件类型</param>
 /// <param name="func">回调方法</param>
 /// <returns>服务类</returns>
 public IWorkflowService Subscribe(EventFireTypeEnum eventType, Func <DelegateContext, IDelegateService, Boolean> func)
 {
     _wfAppRunner.DelegateEventList.Add(
         new KeyValuePair <EventFireTypeEnum, Func <DelegateContext, IDelegateService, bool> >(eventType, func)
         );
     return(this);
 }
Пример #3
0
 /// <summary>
 /// 调用外部业务应用的程序方法
 /// </summary>
 /// <param name="session">数据会话</param>
 /// <param name="eventType">事件类型</param>
 /// <param name="context">活动上下文</param>
 internal static void InvokeExternalDelegate(IDbSession session,
                                             EventFireTypeEnum eventType,
                                             ActivityForwardContext context)
 {
     InvokeExternalDelegate(session, eventType,
                            context.ActivityResource.AppRunner.DelegateEventList,
                            context.FromActivityInstance.ID,
                            context.Activity.ActivityCode,
                            context.ActivityResource);
 }
Пример #4
0
        /// <summary>
        /// 调用外部业务应用的程序方法
        /// </summary>
        /// <param name="session">数据会话</param>
        /// <param name="eventType">事件类型</param>
        /// <param name="eventList">事件列表</param>
        /// <param name="context">上下文</param>
        internal static void InvokeExternalDelegate(IDbSession session,
                                                    EventFireTypeEnum eventType,
                                                    DelegateEventList eventList,
                                                    DelegateContext context)
        {
            //过滤注册事件类型
            var eventListFiltered = eventList.Where(k => k.Key == eventType);

            if (eventListFiltered != null)
            {
                //执行方法
                Execute(session, context, eventListFiltered);
            }
        }
Пример #5
0
        /// <summary>
        /// 调用外部业务应用的程序方法
        /// </summary>
        /// <param name="session">数据会话</param>
        /// <param name="eventType">事件类型</param>
        /// <param name="eventList">事件列表</param>
        /// <param name="instanceID">实例ID</param>
        /// <param name="code">实例代码</param>
        internal static void InvokeExternalDelegate(IDbSession session,
                                                    EventFireTypeEnum eventType,
                                                    DelegateEventList eventList,
                                                    int instanceID,
                                                    string code = null)
        {
            //过滤注册事件类型
            var eventListFiltered = eventList.Where(k => k.Key == eventType);

            if (eventListFiltered != null)
            {
                //执行方法
                Execute(session, instanceID, code, eventListFiltered);
            }
        }
Пример #6
0
        /// <summary>
        /// 调用外部业务应用的程序方法
        /// </summary>
        /// <param name="session">数据会话</param>
        /// <param name="eventType">事件类型</param>
        /// <param name="context">活动上下文</param>
        internal static void InvokeExternalDelegate(IDbSession session,
                                                    EventFireTypeEnum eventType,
                                                    ActivityForwardContext context)
        {
            var delegateContext = new DelegateContext
            {
                AppInstanceID     = context.ProcessInstance.AppInstanceID,
                ProcessGUID       = context.ProcessInstance.ProcessGUID,
                ProcessInstanceID = context.ProcessInstance.ID,
                ActivityGUID      = context.FromActivityInstance.ActivityGUID,
                ActivityName      = context.Activity.ActivityName,
                ActivityCode      = context.Activity.ActivityCode,
                ActivityResource  = context.ActivityResource
            };

            InvokeExternalDelegate(session, eventType,
                                   context.ActivityResource.AppRunner.DelegateEventList,
                                   delegateContext);
        }
Пример #7
0
        /// <summary>
        /// 调用外部业务应用的程序方法
        /// </summary>
        /// <param name="session">数据会话</param>
        /// <param name="eventType">事件类型</param>
        /// <param name="eventList">事件列表</param>
        /// <param name="processInstanceID">流程实例ID</param>
        internal static void InvokeExternalDelegate(IDbSession session,
                                                    EventFireTypeEnum eventType,
                                                    DelegateEventList eventList,
                                                    int processInstanceID)
        {
            //过滤注册事件类型
            var eventListFiltered = eventList.Where(k => k.Key == eventType);

            if (eventListFiltered != null)
            {
                var pim    = new ProcessInstanceManager();
                var entity = pim.GetById(session.Connection, processInstanceID, session.Transaction);
                //执行方法
                var context = new DelegateContext
                {
                    AppInstanceID     = entity.AppInstanceID,
                    ProcessGUID       = entity.ProcessGUID,
                    ProcessInstanceID = processInstanceID
                };
                Execute(session, context, eventListFiltered);
            }
        }
Пример #8
0
        /// <summary>
        /// 调用外部业务应用的程序方法
        /// </summary>
        /// <param name="session">数据会话</param>
        /// <param name="eventType">事件类型</param>
        /// <param name="currentActivity">当前活动节点</param>
        /// <param name="context">活动上下文</param>
        internal static void InvokeExternalDelegate(IDbSession session,
                                                    EventFireTypeEnum eventType,
                                                    ActivityEntity currentActivity,
                                                    ActivityForwardContext context)
        {
            //默认为linker.FromActivity表示执行当前运行节点
            //linker.ToActivity != null 为运行事件类型的节点
            var delegateContext = new DelegateContext
            {
                AppInstanceID     = context.ProcessInstance.AppInstanceID,
                ProcessGUID       = context.ProcessInstance.ProcessGUID,
                ProcessInstanceID = context.ProcessInstance.ID,
                ActivityGUID      = currentActivity.ActivityGUID,
                ActivityName      = currentActivity.ActivityName,
                ActivityCode      = currentActivity.ActivityCode,
                ActivityResource  = context.ActivityResource
            };

            InvokeExternalDelegate(session, eventType,
                                   context.ActivityResource.AppRunner.DelegateEventList,
                                   delegateContext);
        }