You could have a workflow with two tasks, one being a "trigger checker" that could be a super light task scheduled to run every X hours/minutes. This first task would check for your different triggers and define a success criteria for your next task. Then you condition the actual task that you need to execute only if one of these conditions are satisfied.