We also had a requirement to manage dependencies between several tasks of the agent - after viewing various third-party tools and discounting them for various reasons (mainly, to the internal limitations associated with using third-party software), we decided to create our own solution.
The solution focuses around the configuration database, which contains information about the processes (tasks) that must be performed and how they are grouped (parties), as well as the dependencies between the processes.
Summary table of configuration tables used:
Package - determining the level of a group of related processes at a high level includes metadata, such as maximum parallel processes, the current instance of the batch, etc. Process - metadata related to the process (task), such as name, maximum timeout, earliest execution time, status (enabled / disabled), batch (which package belongs to the process), name of the process task, etc. Batch instance - active instance of a specific batch Process Instance - active process instances for a specific batch Process dependency dependency matrix Batch instance state - search for batch instance status Process instance status - loolup for process instance status
Each batch has 2 control tasks - START BATCH and UPDATE BATCH. The first deals with the launch of all processes belonging to him, and the second - with the latter, which runs in any given batch and is engaged in updating the status of the results.
Each process has an agent job associated with it, which is executed when the START BATCH job is executed. Processes have limited concurrency (defined in a batch configuration), so processes start up to the maximum x value at a time, and then START BATCH waits until free access to the slot becomes available before the next process begins.
The process agent job steps invoke the SSIS boilerplate package, which processes the actual ETL operation and decides whether the process should start and wait for dependencies, etc.
We are currently moving to a Service Broker solution for more flexibility and control.
In any case, perhaps there are too many details and not enough examples, so the VS2010 project is available on request.