@startuml images/02_class.png
Title Control Package Class Structure


interface Runnable {
	run()
}

enum WorkflowSignalState

package org.dataone.configuration {
	class Settings
}


package org.dataone.cn.audit {

	class DataONEConfiguration  {
		HashMap dataONEConfig
		==
		mapConfig()
		readConfig()
		getDataONEConfig()
	}
	
	package org.dataone.cn.audit.control {
		
			interface JobController {
				stopTask()
			}
			
			interface AuditJob {
				stopJob()
				startJob()
			}
			
			package org.dataone.cn.audit.control.impl{
						class AuditJobControllerImpl {
						
							-{static} JobAudit jobAudit
							==
							..
							
							+init()
							+waitForClusterNodes()
							+runTask()
							+stopTask()
						}
							
						class AuditJobImpl {
							Topic hzCommandTopic
							BlockingDeque waitProgessDeque;
							==
							+run()
							+startJob()
							+stopJob()
						}
					}
			
			AuditJobImpl <.. AuditJob
			AuditJobControllerImpl <.. JobController
			AuditJobControllerImpl *-- AuditJob
		}
		
	AuditJob <.. Runnable
	AuditJobControllerImpl *-- DataONEConfiguration
	DataONEConfiguration *-- Settings
}

@enduml