#pragma once #include "IWorkflowManager.h" namespace DIOS::Dev::Detail::MachineryECOM { enum WORKFLOW_STATUS { WFS_NONE, WFS_SINGLE, WFS_TOMO, WFS_CALIBRATION, WFS_SELFTEST, WFS_PARKING, }; class IExamHandler; class WorkFlowManager : public IWorkflowManager { public: WorkFlowManager(); ~WorkFlowManager(); public: static WorkFlowManager *Instance(); public: virtual IExamHandler *GetCurrentWorkFlowHandler() override; virtual void EnterSystemReset() override; virtual void ExitSystemReset() override; virtual void EnterSystemResetSwing() override; virtual void ExitSystemResetSwing() override; virtual void EnterSystemResetCircular() override; virtual void ExitSystemResetCircular() override; virtual int ChangeExamMode(const std::string &examKey, const std::string &examType) override; virtual int ChangeToResetMode() override; virtual int ChangeWorkstation(const std::string& workstaion) override; virtual void SwitchScanning(DOF_MECH mech) override; BOOL IsCalibrating(); void EnterCalibration(); void ExitCalibration(); BOOL IsSelfTesting(); void EnterSelfTest(); void ExitSelfTest(); BOOL IsParking(); void EnterParking(); void ExitParking(); private: IExamHandler *SaveContext(); IExamHandler *RestoreContext(); private: static WorkFlowManager *m_instance; IExamHandler *m_storedExamHandler; WORKFLOW_STATUS m_workFlowStatus; WORKFLOW_STATUS m_storedWorkFlowStatus; }; }