Example #1
0
 public EventHandler(AstTaskEventHandlerNode astNode, Executable hostExecutable)
     : base(astNode.EventType.ToString()) 
 {
     _astTaskEventHandlerNode = astNode;
     _hostExecutable = hostExecutable;
     _eventName = _astTaskEventHandlerNode.EventType.ToString();
 }
Example #2
0
        private static void _packageBuildOnEndEvent(AstPackageBaseNode package)
        {
            var packageEvent = ContainerFindEvent(package.Events, EventType.OnPostExecute);

            if (packageEvent == null)
            {
                packageEvent = new AstTaskEventHandlerNode(package) { EventType = EventType.OnPostExecute };
                package.Events.Add(packageEvent);
            }

            var postExecContainer = new AstContainerTaskNode(packageEvent) { Name = "OnPostExec", ConstraintMode = ContainerConstraintMode.Linear };
            packageEvent.Tasks.Insert(0, postExecContainer);

            var constrainedCont = new AstContainerTaskNode(packageEvent) { Name = "ConstrainedContainer", ConstraintMode = ContainerConstraintMode.Parallel };
            postExecContainer.Tasks.Add(constrainedCont);

            var executeSql = new AstExecuteSqlTaskNode(postExecContainer)
                                 {
                                     Name = "Exec usp_PackageEnd",
                                     ExecuteDuringDesignTime = false,
                                     Connection = package.LogConnection
                                 };
            executeSql.PrecedenceConstraints = new AstTaskflowPrecedenceConstraintsNode(executeSql);
            executeSql.PrecedenceConstraints.Inputs.Add(
                new AstTaskflowInputPathNode(executeSql.PrecedenceConstraints)
                {
                    Expression = "@[System::PackageID] == @[System::SourceID]",
                    EvaluationOperation = TaskEvaluationOperationType.Expression,
                    OutputPath = constrainedCont.OutputPath
                });
            executeSql.Query = new AstExecuteSqlQueryNode(executeSql)
                                   {
                                       Body = "\"EXEC usp_PackageEnd \" + (@[System::PackageName] == \"\" ? \"NULL\" : \"'\"+@[System::PackageName]+\"'\") +\",\"+(@[System::PackageID] == \"\" ? \"NULL\" : \"'\"+@[System::PackageID]+\"'\") +\",\"+(@[User::_parentPackageGuid] == \"\" ? \"NULL\" : \"'\"+@[User::_parentPackageGuid]+\"'\") +\",\"+(@[System::SourceName] == \"\" ? \"NULL\" : \"'\"+@[System::SourceName]+\"'\") +\",\"+(@[System::SourceID] == \"\" ? \"NULL\" : \"'\"+@[System::SourceID]+\"'\") +\",\"+(@[System::SourceParentGUID] == \"\" ? \"NULL\" : \"'\"+@[System::SourceParentGUID]+\"'\") +\",\"+ (@[System::MachineName] == \"\" ? \"NULL\" : \"'\"+@[System::MachineName]+\"'\") +\",\"+(@[System::UserName] == \"\" ? \"NULL\" : \"'\"+@[System::UserName]+\"'\") +\",\"+(@[User::_patchedExecutionGuid] == \"\" ? \"NULL\" : \"'\"+@[User::_patchedExecutionGuid])+\"'\"",
                                       QueryType = QueryType.Expression
                                   };
            postExecContainer.Tasks.Add(executeSql);
        }
Example #3
0
        private static void _packageBuildOnErrorEvent(AstPackageBaseNode package)
        {
            var packageEvent = ContainerFindEvent(package.Events, EventType.OnError);

            if (packageEvent == null)
            {
                packageEvent = new AstTaskEventHandlerNode(package) { EventType = EventType.OnError };
                package.Events.Add(packageEvent);
            }

            var executeSql = new AstExecuteSqlTaskNode(packageEvent)
                                     {
                                         Name = "Exec usp_PackageError",
                                         ExecuteDuringDesignTime = false,
                                         Connection = package.LogConnection
                                     };
            executeSql.Query = new AstExecuteSqlQueryNode(executeSql)
                                   {
                                       Body = "\"EXECUTE [usp_PackageError] ?,?,?,?,?,?,?,?,?,? \"",
                                       QueryType = QueryType.Expression
                                   };

            executeSql.Query.Parameters.Add(new AstExecuteSqlParameterMappingTypeNode(executeSql.Query) {Name = "0", Direction = Direction.Input, Variable = packageName,Length = 255 });
            executeSql.Query.Parameters.Add(new AstExecuteSqlParameterMappingTypeNode(executeSql.Query) { Name = "1", Direction = Direction.Input, Variable = packageGuid, Length = 255 });
            executeSql.Query.Parameters.Add(new AstExecuteSqlParameterMappingTypeNode(executeSql.Query) { Name = "2", Direction = Direction.Input, Variable = parentPackageGuid, Length = 255 });
            executeSql.Query.Parameters.Add(new AstExecuteSqlParameterMappingTypeNode(executeSql.Query) { Name = "3", Direction = Direction.Input, Variable = source, Length = 255 });
            executeSql.Query.Parameters.Add(new AstExecuteSqlParameterMappingTypeNode(executeSql.Query) { Name = "4", Direction = Direction.Input, Variable = sourceID, Length = 255 });
            executeSql.Query.Parameters.Add(new AstExecuteSqlParameterMappingTypeNode(executeSql.Query) { Name = "5", Direction = Direction.Input, Variable = parentSourceID, Length = 255 });
            executeSql.Query.Parameters.Add(new AstExecuteSqlParameterMappingTypeNode(executeSql.Query) { Name = "6", Direction = Direction.Input, Variable = machineName, Length = 255 });
            executeSql.Query.Parameters.Add(new AstExecuteSqlParameterMappingTypeNode(executeSql.Query) { Name = "7", Direction = Direction.Input, Variable = userName, Length = 255 });
            executeSql.Query.Parameters.Add(new AstExecuteSqlParameterMappingTypeNode(executeSql.Query) { Name = "8", Direction = Direction.Input, Variable = patchedExecutionGuid, Length = 255 });
            executeSql.Query.Parameters.Add(new AstExecuteSqlParameterMappingTypeNode(executeSql.Query) { Name = "9", Direction = Direction.Input, Variable = errorDescription, Length = -1 });

            packageEvent.Tasks.Insert(0, executeSql);
        }