public virtual void DoModifyFileOperations(string rootPath, MaterialFileOeprationInfo fileOperation, MaterialContent content)
        {
            var task = new InvokeServiceTask()
            {
                TaskID    = UuidHelper.NewUuidString(),
                TaskTitle = string.Format(this.taskTitleTemplate, fileOperation.Material.OriginalName, fileOperation.Material.ID),
            };

            var parameters = new WfServiceOperationParameterCollection
            {
                new WfServiceOperationParameter("rootPath", rootPath),
                new WfServiceOperationParameter("fileOperation", fileOperation.Operation.ToString()),
                new WfServiceOperationParameter("materialConnectionName",
                                                DbConnectionMappingContext.GetMappedConnectionName(MaterialAdapter.Instance.GetConnectionName())),
                new WfServiceOperationParameter("contentConnectionName",
                                                DbConnectionMappingContext.GetMappedConnectionName(MaterialContentAdapter.Instance.ConnectionName)),
                new WfServiceOperationParameter("materialId", fileOperation.Material.ID),
                new WfServiceOperationParameter("url", fileOperation.Material.ShowFileUrl)
            };


            task.SvcOperationDefs.Add(new WfServiceOperationDefinition(
                                          new WfServiceAddressDefinition(WfServiceRequestMethod.Post, null, ResourceUriSettings.GetConfig().Paths[this.resourceUri].Uri.ToString()),
                                          "DoFileToDocService", parameters, "ReturnValue")
                                      );

            DbConnectionMappingContext.DoMappingAction(
                DbConnectionMappingContext.GetMappedConnectionName(InvokeServiceTaskAdapter.Instance.ConnectionName),
                InvokeServiceTaskAdapter.Instance.ConnectionName,
                () =>
            {
                InvokeServiceTaskAdapter.Instance.Update(task);
            });
        }
		public virtual void DoModifyFileOperations(string rootPath, MaterialFileOeprationInfo fileOperation, MaterialContent content)
		{
			var task = new InvokeServiceTask()
			{
				TaskID = UuidHelper.NewUuidString(),
				TaskTitle = string.Format(this.taskTitleTemplate, fileOperation.Material.OriginalName, fileOperation.Material.ID),
			};

			var parameters = new WfServiceOperationParameterCollection
			{
				new WfServiceOperationParameter("rootPath", rootPath),
				new WfServiceOperationParameter("fileOperation", fileOperation.Operation.ToString()),
				new WfServiceOperationParameter("materialConnectionName",
					DbConnectionMappingContext.GetMappedConnectionName(MaterialAdapter.Instance.GetConnectionName())),
				new WfServiceOperationParameter("contentConnectionName",
					DbConnectionMappingContext.GetMappedConnectionName(MaterialContentAdapter.Instance.ConnectionName)),
				new WfServiceOperationParameter("materialId", fileOperation.Material.ID),
				new WfServiceOperationParameter("url", fileOperation.Material.ShowFileUrl)
			};


			task.SvcOperationDefs.Add(new WfServiceOperationDefinition(
					new WfServiceAddressDefinition(WfServiceRequestMethod.Post, null, ResourceUriSettings.GetConfig().Paths[this.resourceUri].Uri.ToString()),
						"DoFileToDocService", parameters, "ReturnValue")
					);

			DbConnectionMappingContext.DoMappingAction(
				DbConnectionMappingContext.GetMappedConnectionName(InvokeServiceTaskAdapter.Instance.ConnectionName),
				InvokeServiceTaskAdapter.Instance.ConnectionName,
				() =>
				{
					InvokeServiceTaskAdapter.Instance.Update(task);
				});
		}
        protected override void OnExecute(SysTask task)
        {
            InvokeServiceTask invokeServiceTask = new InvokeServiceTask(task);

            WfServiceInvoker.InvokeContext.Clear();
            WfServiceInvoker.InvokeContext.CopyFrom(invokeServiceTask.Context);

            foreach (WfServiceOperationDefinition svcDefinition in invokeServiceTask.SvcOperationDefs)
            {
                WfServiceInvoker svcInvoker = new WfServiceInvoker(svcDefinition);

                svcInvoker.Headers.Set("SysTaskID", task.TaskID);

                svcInvoker.Invoke();
            }
        }
        public void InvokeServiceTaskPersistTest()
        {
            DO.InvokeServiceTask task = PrepareTask();

            DO.InvokeServiceTaskAdapter.Instance.Update(task);

            DO.InvokeServiceTask taskLoaded = (DO.InvokeServiceTask)DO.InvokeServiceTaskAdapter.Instance.Load(task.TaskID);

            Assert.IsNotNull(taskLoaded);
            Assert.IsTrue(taskLoaded.Data.IsNotEmpty());
            Assert.AreEqual(task.TaskID, taskLoaded.TaskID);
            Assert.AreEqual(task.TaskTitle, taskLoaded.TaskTitle);

            Assert.AreEqual(task.SvcOperationDefs.Count, taskLoaded.SvcOperationDefs.Count);
            Assert.AreEqual(task.SvcOperationDefs[0].AddressDef.Address, taskLoaded.SvcOperationDefs[0].AddressDef.Address);
            Assert.AreEqual(task.Context.Count, taskLoaded.Context.Count);
        }
        private static InvokeServiceTask PrepareTask()
        {
            string url = "http://localhost/MCSWebApp/PermissionCenterServices/services/PermissionCenterToADService.asmx";

            DO.InvokeServiceTask task = new DO.InvokeServiceTask()
            {
                TaskID    = UuidHelper.NewUuidString(),
                TaskTitle = "新任务",
            };

            WfServiceOperationParameterCollection parameters = new WfServiceOperationParameterCollection();

            parameters.Add(new WfServiceOperationParameter("callerID", "InvokeServiceTaskPersistTest"));

            task.SvcOperationDefs.Add(new Workflow.WfServiceOperationDefinition(
                                          new Workflow.WfServiceAddressDefinition(WfServiceRequestMethod.Post, null, url),
                                          "GetVersion", parameters, "ReturnValue")
                                      );

            return(task);
        }
        public void InvokeServiceTaskExecuteTest()
        {
            DO.InvokeServiceTask task = PrepareTask();

            DO.InvokeServiceTaskAdapter.Instance.Update(task);

            DO.SysTask taskLoaded = DO.SysTaskAdapter.Instance.Load(task.TaskID);

            ISysTaskExecutor executor = SysTaskSettings.GetSettings().GetExecutor(taskLoaded.TaskType);

            executor.Execute(taskLoaded);

            Console.WriteLine(WfServiceInvoker.InvokeContext[task.SvcOperationDefs.FirstOrDefault().RtnXmlStoreParamName]);

            SysAccomplishedTask accomplishedTask = SysAccomplishedTaskAdapter.Instance.Load(taskLoaded.TaskID);

            Assert.IsNotNull(accomplishedTask);
            Assert.AreEqual(taskLoaded.Data, accomplishedTask.Data);

            Console.WriteLine(accomplishedTask.StatusText);
        }
		private static InvokeServiceTask PrepareTask()
		{
			string url = "http://localhost/MCSWebApp/PermissionCenterServices/services/PermissionCenterToADService.asmx";

			DO.InvokeServiceTask task = new DO.InvokeServiceTask()
			{
				TaskID = UuidHelper.NewUuidString(),
				TaskTitle = "新任务",
			};

			WfServiceOperationParameterCollection parameters = new WfServiceOperationParameterCollection();

			parameters.Add(new WfServiceOperationParameter("callerID", "InvokeServiceTaskPersistTest"));

			task.SvcOperationDefs.Add(new Workflow.WfServiceOperationDefinition(
					new Workflow.WfServiceAddressDefinition(WfServiceRequestMethod.Post, null, url),
						"GetVersion", parameters, "ReturnValue")
				);

			return task;
		}