Hi Rob,
ok, dependencies don't work for unrelated batches, which is somehow logical, I think. In order to synchronize unrelated batches, you use synchronizing resources.
As an example, you want to do some reporting and a database backup over night. It is obvious that both actions aren't related, at least not logically. But it is very well possible that reporting would slow down the backup and vice versa. So if they run in parallel, the total time required would exceed the time required if they would be serialized.
In this case you'd definitely choose synchronizing resources. You create a resource that mirrors some database. The reporting job would allocate the resource with shared lock, the backup with exclusive lock. This guarantees that they don't run in parallel.
In case of backup and restore (e.g. you make a backup of the production database and restore it in a test/QA environment) both processes are logically related. You can't restore a not yet existing backup. Now you have a choice. You can either put them together into some common parent batch and create a dependency, or you make use of synchronizing resources again. In the latter case you'll need a resource with a state model and either test for actuality (expiration) in the restore job, or toggle the state between the two batches (IS_BACKUPED <-> IS_RESTORED). (In this specific example, I'd test for actuality).
The good question in this case is: who's responsible? If two different departments are responsible, I'd choose the resource solution. If it's all in one hand, why make it more complicated than necessary?
Welcome :-)
Ronald
PS. A third possibility just came to mind. The backup batch could trigger the restore batch as a master (top level) batch. But I think that's a bit obscure. Using resources or dependencies is a better way to describe the situation.