MS-ಗ್ರಾಫ್ನೊಂದಿಗೆ ಇಮೇಲ್ ನಿರ್ವಹಣೆ
ಇಮೇಲ್ ಫೋಲ್ಡರ್ಗಳನ್ನು ಪರಿಣಾಮಕಾರಿಯಾಗಿ ನಿರ್ವಹಿಸುವುದು ಸಾಫ್ಟ್ವೇರ್ ಅಭಿವೃದ್ಧಿಯಲ್ಲಿ ನಿರ್ಣಾಯಕವಾಗಿದೆ, ವಿಶೇಷವಾಗಿ ಮೈಕ್ರೋಸಾಫ್ಟ್ ಗ್ರಾಫ್ (ಎಂಎಸ್-ಗ್ರಾಫ್) ನಂತಹ APIಗಳೊಂದಿಗೆ ವ್ಯವಹರಿಸುವಾಗ. ಇಮೇಲ್ ಐಟಂಗಳನ್ನು ಪ್ರೋಗ್ರಾಮಿಕ್ ಆಗಿ ಕುಶಲತೆಯಿಂದ ನಿರ್ವಹಿಸಲು ಪ್ರಯತ್ನಿಸುವಾಗ ಡೆವಲಪರ್ಗಳು ಆಗಾಗ್ಗೆ ಸಮಸ್ಯೆಗಳನ್ನು ಎದುರಿಸುತ್ತಾರೆ. ಅಳಿಸುವಿಕೆಯಂತಹ ಕ್ರಿಯೆಗಳು ಮೂಲ ಫೋಲ್ಡರ್ನಂತಹ ಅನಪೇಕ್ಷಿತ ಸ್ಥಳಗಳಿಗಿಂತ ನಿರ್ದಿಷ್ಟ ಉಪ ಫೋಲ್ಡರ್ಗಳಲ್ಲಿ ಗುರಿಪಡಿಸಿದ ಐಟಂಗಳನ್ನು ಮಾತ್ರ ಪರಿಣಾಮ ಬೀರುತ್ತವೆ ಎಂಬುದನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳುವುದು ಸಾಮಾನ್ಯ ಸವಾಲು.
ಈ ಸಂದರ್ಭದಲ್ಲಿ, C# ಮತ್ತು MS-Graph ಅನ್ನು ಬಳಸಿಕೊಂಡು INBOX ಅಡಿಯಲ್ಲಿರುವ ಸಬ್ಫೋಲ್ಡರ್ನಿಂದ ಇಮೇಲ್ ಅನ್ನು ಅಳಿಸುವುದು ಗುರಿಯಾಗಿದೆ, ಆದರೆ ಇಮೇಲ್ ಅನ್ನು INBOX ನಿಂದ ತೆಗೆದುಹಾಕಲಾಗುತ್ತಿದೆ. ಇಮೇಲ್ ಡೇಟಾದ ಸಮಗ್ರತೆಯನ್ನು ಕಾಪಾಡಿಕೊಳ್ಳುವಲ್ಲಿ ಇದು ತೊಡಕುಗಳನ್ನು ಪರಿಚಯಿಸುತ್ತದೆ, ವಿಶೇಷವಾಗಿ ಮೇಲ್ಬಾಕ್ಸ್ ಐಟಂಗಳ ಕಾರ್ಯಾಚರಣೆಗಳಿಗೆ ನಿಖರತೆಯ ಅಗತ್ಯವಿರುವಾಗ.
| ಆಜ್ಞೆ | ವಿವರಣೆ |
|---|---|
| graphClient.Users[].MailFolders[].Messages[].Request().DeleteAsync() | ಅಸಮಕಾಲಿಕ ವಿನಂತಿಯನ್ನು ಮಾಡುವ ಮೂಲಕ MS ಗ್ರಾಫ್ API ಅನ್ನು ಬಳಸಿಕೊಂಡು ನಿರ್ದಿಷ್ಟ ಫೋಲ್ಡರ್ನಿಂದ ನಿರ್ದಿಷ್ಟ ಇಮೇಲ್ ಅನ್ನು ಅಳಿಸುತ್ತದೆ. |
| graphClient.Users[].MailFolders[].ChildFolders.Request().GetAsync() | MS ಗ್ರಾಫ್ API ಅನ್ನು ಬಳಸಿಕೊಂಡು ಇನ್ಬಾಕ್ಸ್ನಂತಹ ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಮೇಲ್ ಫೋಲ್ಡರ್ನ ಎಲ್ಲಾ ಚೈಲ್ಡ್ ಫೋಲ್ಡರ್ಗಳನ್ನು ಅಸಮಕಾಲಿಕವಾಗಿ ಹಿಂಪಡೆಯುತ್ತದೆ. |
| FirstOrDefault() | System.Linq ನ ಭಾಗ, ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಸ್ಥಿತಿಯನ್ನು ಪೂರೈಸುವ ಅಥವಾ ಅಂತಹ ಯಾವುದೇ ಅಂಶ ಅಸ್ತಿತ್ವದಲ್ಲಿಲ್ಲದಿದ್ದರೆ ಡೀಫಾಲ್ಟ್ ಅನ್ನು ಹಿಂದಿರುಗಿಸುವ ಅನುಕ್ರಮದಲ್ಲಿ ಮೊದಲ ಅಂಶವನ್ನು ಕಂಡುಹಿಡಿಯಲು ಬಳಸಲಾಗುತ್ತದೆ. |
| Console.WriteLine() | ಕನ್ಸೋಲ್ ಅಪ್ಲಿಕೇಶನ್ಗಳಲ್ಲಿ ಔಟ್ಪುಟ್ ಅನ್ನು ಪ್ರದರ್ಶಿಸಲು ಸಾಮಾನ್ಯವಾಗಿ ಬಳಸುವ ಪ್ರಮಾಣಿತ ಔಟ್ಪುಟ್ ಸ್ಟ್ರೀಮ್ಗೆ ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಡೇಟಾ ಸ್ಟ್ರಿಂಗ್ ಅನ್ನು ಬರೆಯುತ್ತದೆ. |
| try...catch | ಎಕ್ಸೆಪ್ಶನ್ ಹ್ಯಾಂಡ್ಲಿಂಗ್ ಸ್ಟ್ರಕ್ಟ್ ಅನ್ನು ಟ್ರೈ ಬ್ಲಾಕ್ನಲ್ಲಿ ಕೋಡ್ನ ಎಕ್ಸಿಕ್ಯೂಶನ್ ಸಮಯದಲ್ಲಿ ಸಂಭವಿಸಬಹುದಾದ ವಿನಾಯಿತಿಗಳನ್ನು ಹಿಡಿಯಲು ಬಳಸಲಾಗುತ್ತದೆ ಮತ್ತು ಅವುಗಳನ್ನು ಕ್ಯಾಚ್ ಬ್ಲಾಕ್ನಲ್ಲಿ ನಿರ್ವಹಿಸಲು ಬಳಸಲಾಗುತ್ತದೆ. |
| await | ನಿರೀಕ್ಷಿತ ಕಾರ್ಯವು ಪೂರ್ಣಗೊಳ್ಳುವವರೆಗೆ ವಿಧಾನದ ಕಾರ್ಯಗತಗೊಳಿಸುವಿಕೆಯನ್ನು ವಿರಾಮಗೊಳಿಸಲು C# ನಲ್ಲಿ ಅಸಿಂಕ್ ಪ್ರೋಗ್ರಾಮಿಂಗ್ನಲ್ಲಿ ಬಳಸಲಾಗುತ್ತದೆ, ಕೋಡ್ ಸಿಂಕ್ರೊನಸ್ ಆಗಿ ವರ್ತಿಸುವಂತೆ ಮಾಡುತ್ತದೆ. |
MS ಗ್ರಾಫ್ API ಬಳಸಿಕೊಂಡು ಇಮೇಲ್ ಅಳಿಸುವಿಕೆ ಆಟೊಮೇಷನ್ ಅನ್ನು ಅನ್ವೇಷಿಸಲಾಗುತ್ತಿದೆ
ಒದಗಿಸಲಾದ ಸ್ಕ್ರಿಪ್ಟ್ಗಳು ಮುಖ್ಯ INBOX ಫೋಲ್ಡರ್ಗಿಂತ ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಸಬ್ಫೋಲ್ಡರ್ನಿಂದ ಇಮೇಲ್ ಅನ್ನು ಅಳಿಸಲು C# ನಲ್ಲಿ Microsoft Graph API ಬಳಕೆಯನ್ನು ವಿವರಿಸುತ್ತದೆ. ಫೋಲ್ಡರ್ ಕ್ರಮಾನುಗತವನ್ನು ಸರಿಯಾಗಿ ಗುರುತಿಸುವ ಮೂಲಕ ಮತ್ತು ಇಮೇಲ್ನ ನಿಖರವಾದ ಸ್ಥಳಕ್ಕೆ ಅಳಿಸುವ ವಿನಂತಿಯನ್ನು ಕಳುಹಿಸುವ ಮೂಲಕ ಇದನ್ನು ಸಾಧಿಸಲಾಗುತ್ತದೆ. ಮೊದಲ ಕೀ ಆಜ್ಞೆ, , ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಫೋಲ್ಡರ್ನಲ್ಲಿ ಸಂದೇಶವನ್ನು ನೇರವಾಗಿ ಪ್ರವೇಶಿಸಲು ಮತ್ತು ಅಳಿಸಲು ಪ್ರಮುಖವಾಗಿದೆ. ಮೂಲ INBOX ಫೋಲ್ಡರ್ನಲ್ಲಿರುವ ಇತರ ಇಮೇಲ್ಗಳ ಮೇಲೆ ಪರಿಣಾಮ ಬೀರದಂತೆ ಅಳಿಸುವಿಕೆ ಕಾರ್ಯಾಚರಣೆಯು ಉದ್ದೇಶಿತ ಇಮೇಲ್ ಅನ್ನು ಮಾತ್ರ ಗುರಿಯಾಗಿಸುತ್ತದೆ ಎಂದು ಈ ವಿಧಾನವು ಖಚಿತಪಡಿಸುತ್ತದೆ.
ದ್ವಿತೀಯ ಉದಾಹರಣೆಯು ಆಜ್ಞೆಯನ್ನು ಒಳಗೊಂಡಿದೆ, , ಇದು INBOX ನಂತಹ ನಿರ್ದಿಷ್ಟ ಮೂಲ ಫೋಲ್ಡರ್ ಅಡಿಯಲ್ಲಿ ಎಲ್ಲಾ ಮಕ್ಕಳ ಫೋಲ್ಡರ್ಗಳನ್ನು ಪಡೆಯುತ್ತದೆ. ಈ ಫೋಲ್ಡರ್ಗಳನ್ನು ಹಿಂಪಡೆಯುವ ಮೂಲಕ ಮತ್ತು ಸರಿಯಾದ ಉಪ ಫೋಲ್ಡರ್ ಅನ್ನು ಗುರುತಿಸುವ ಮೂಲಕ , ಇಮೇಲ್ ಅಳಿಸುವಿಕೆ ವಿನಂತಿಯನ್ನು ಸರಿಯಾದ ಫೋಲ್ಡರ್ನಲ್ಲಿ ಮಾಡಲಾಗಿದೆ ಎಂದು ಸ್ಕ್ರಿಪ್ಟ್ ಖಚಿತಪಡಿಸುತ್ತದೆ. ಉದ್ದೇಶವಿಲ್ಲದ ಸ್ಥಳಗಳಿಂದ ಇಮೇಲ್ಗಳನ್ನು ಅಳಿಸುವಂತಹ ಸಾಮಾನ್ಯ ತಪ್ಪುಗಳನ್ನು ತಪ್ಪಿಸಲು ಈ ನಿಖರವಾದ ಗುರಿಯು ಅತ್ಯಗತ್ಯವಾಗಿರುತ್ತದೆ, ಹೀಗಾಗಿ ಮೇಲ್ಬಾಕ್ಸ್ನ ರಚನೆಯ ಸಮಗ್ರತೆಯನ್ನು ಕಾಪಾಡಿಕೊಳ್ಳುತ್ತದೆ.
C# ನೊಂದಿಗೆ MS ಗ್ರಾಫ್ನಲ್ಲಿ ನಿರ್ದಿಷ್ಟ ಇಮೇಲ್ಗಳನ್ನು ಅಳಿಸಲಾಗುತ್ತಿದೆ
C# ಮತ್ತು ಮೈಕ್ರೋಸಾಫ್ಟ್ ಗ್ರಾಫ್ API ಇಂಪ್ಲಿಮೆಂಟೇಶನ್
using Microsoft.Graph;using System.Threading.Tasks;// Define asynchronous method to delete an emailpublic async Task DeleteEmailFromSubfolder(GraphServiceClient graphClient, string userPrincipalName, string subFolderId, string messageId){try{// Construct the request to access subfolder directlyvar request = graphClient.Users[userPrincipalName].MailFolders[subFolderId].Messages[messageId].Request();// Execute delete operationawait request.DeleteAsync();Console.WriteLine("Email deleted successfully from subfolder.");}catch (ServiceException ex){Console.WriteLine($"Error deleting email: {ex.Message}");}}
ಉಪ ಫೋಲ್ಡರ್ಗಳಲ್ಲಿ ಇಮೇಲ್ ಅಳಿಸುವಿಕೆಗೆ ಸರಿಯಾದ API ಎಂಡ್ಪಾಯಿಂಟ್ ಬಳಕೆ
ಸುಧಾರಿತ C# ಮತ್ತು MS ಗ್ರಾಫ್ ಟೆಕ್ನಿಕ್ಸ್
using Microsoft.Graph;using System.Threading.Tasks;// Helper function to find the right subfolder and delete the messagepublic async Task DeleteEmailCorrectly(GraphServiceClient graphClient, string userPrincipalName, string parentFolderName, string subFolderId, string messageId){try{// Retrieve the child folders under the Inboxvar childFolders = await graphClient.Users[userPrincipalName].MailFolders[parentFolderName].ChildFolders.Request().GetAsync();var subFolder = childFolders.FirstOrDefault(f => f.Id == subFolderId);if (subFolder != null){// Directly delete the message if the folder is correctly identifiedawait graphClient.Users[userPrincipalName].MailFolders[subFolder.Id].Messages[messageId].Request().DeleteAsync();Console.WriteLine("Successfully deleted the email from the specified subfolder.");}else{Console.WriteLine("Subfolder not found.");}}catch (ServiceException ex){Console.WriteLine($"Error: {ex.Message}");}}
MS ಗ್ರಾಫ್ API ಜೊತೆಗೆ ಇಮೇಲ್ ಕಾರ್ಯಾಚರಣೆಗಳ ಸುಧಾರಿತ ನಿರ್ವಹಣೆ
ಇಮೇಲ್ಗಳನ್ನು ನಿರ್ವಹಿಸಲು Microsoft Graph API ನೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವಾಗ, ಒಬ್ಬರು ಕಾರ್ಯಾಚರಣೆಗಳನ್ನು ಮಾತ್ರವಲ್ಲದೆ ಭದ್ರತೆ ಮತ್ತು ಅನುಮತಿಗಳ ಅಂಶಗಳನ್ನು ಪರಿಗಣಿಸಬೇಕು. API ಮೇಲ್ಬಾಕ್ಸ್ ಐಟಂಗಳ ಮೇಲೆ ಹರಳಿನ ನಿಯಂತ್ರಣವನ್ನು ಒದಗಿಸುತ್ತದೆ, ಇದು ಸುರಕ್ಷಿತ ಮತ್ತು ಪರಿಣಾಮಕಾರಿ ಇಮೇಲ್ ಕಾರ್ಯಾಚರಣೆಗಳನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ. ಸ್ಕೋಪ್ಡ್ ಅನುಮತಿಗಳನ್ನು ಬಳಸುವ ಮೂಲಕ, ಡೆವಲಪರ್ಗಳು ಅಪ್ಲಿಕೇಶನ್ಗಳು ಅಧಿಕೃತ ಗಡಿಗಳಲ್ಲಿ ಮಾತ್ರ ಕಾರ್ಯಾಚರಣೆಗಳನ್ನು ನಿರ್ವಹಿಸುತ್ತವೆ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಬಹುದು, ಹೀಗಾಗಿ ಸುರಕ್ಷತೆಯನ್ನು ಹೆಚ್ಚಿಸಬಹುದು. ಉದಾಹರಣೆಗೆ, ನಿರ್ದಿಷ್ಟ ಫೋಲ್ಡರ್ನಿಂದ ಇಮೇಲ್ ಅನ್ನು ಅಳಿಸಲು, ಅಪ್ಲಿಕೇಶನ್ Mail.ReadWrite ಅನುಮತಿಗಳನ್ನು ಹೊಂದಿರಬೇಕು.
ಇದಲ್ಲದೆ, ಮೈಕ್ರೋಸಾಫ್ಟ್ ಗ್ರಾಫ್ನಲ್ಲಿ ಮೇಲ್ಬಾಕ್ಸ್ಗಳು ಮತ್ತು ಫೋಲ್ಡರ್ಗಳ ರಚನೆಯನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು ನಿರ್ಣಾಯಕವಾಗಿದೆ. ಈ ಜ್ಞಾನವು ಡೆವಲಪರ್ಗಳಿಗೆ ನಿರ್ದಿಷ್ಟ ಐಟಂಗಳನ್ನು ನಿಖರವಾಗಿ ಗುರಿಯಾಗಿಸುವ ಪ್ರಶ್ನೆಗಳು ಮತ್ತು ವಿನಂತಿಗಳನ್ನು ನಿರ್ಮಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ, ಇತರ ಫೋಲ್ಡರ್ಗಳಿಂದ ಅನಪೇಕ್ಷಿತ ಅಳಿಸುವಿಕೆಗಳಂತಹ ಸಾಮಾನ್ಯ ದೋಷಗಳನ್ನು ತಡೆಯುತ್ತದೆ. MS ಗ್ರಾಫ್ API ಯ ಪರಿಣಾಮಕಾರಿ ಬಳಕೆಯು ಕೇವಲ ತಾಂತ್ರಿಕ ಆಜ್ಞೆಗಳನ್ನು ಮಾತ್ರವಲ್ಲದೆ ಫೋಲ್ಡರ್ ಕ್ರಮಾನುಗತ ಮತ್ತು ಪ್ರವೇಶ ಹಕ್ಕುಗಳ ನಿರ್ವಹಣೆಯ ಸುತ್ತ ಕಾರ್ಯತಂತ್ರದ ಯೋಜನೆಯನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ.
- MS ಗ್ರಾಫ್ ಬಳಸಿ ಇಮೇಲ್ ಅನ್ನು ಅಳಿಸಲು ಯಾವ ಅನುಮತಿಗಳ ಅಗತ್ಯವಿದೆ?
- ಅಪ್ಲಿಕೇಶನ್ ಹೊಂದಿರಬೇಕು ಅನುಮತಿಗಳು.
- ಇಮೇಲ್ ಅನ್ನು ಅಳಿಸುವ ಮೊದಲು ನೀವು ಸರಿಯಾದ ಫೋಲ್ಡರ್ ಅನ್ನು ಹೇಗೆ ಪರಿಶೀಲಿಸುತ್ತೀರಿ?
- ಬಳಸಿ ಉಪ ಫೋಲ್ಡರ್ಗಳನ್ನು ಪಟ್ಟಿ ಮಾಡಲು ಮತ್ತು ಗುರಿ ಫೋಲ್ಡರ್ ಅನ್ನು ಪರಿಶೀಲಿಸಲು.
- MS ಗ್ರಾಫ್ ಬಳಸಿ ಇಮೇಲ್ ಅನ್ನು ಅಳಿಸಿದ ನಂತರ ಅದನ್ನು ಮರುಪಡೆಯಬಹುದೇ?
- ಹೌದು, ಅಳಿಸಲಾದ ಐಟಂಗಳು ಸಾಮಾನ್ಯವಾಗಿ ಅಳಿಸಲಾದ ಐಟಂಗಳ ಫೋಲ್ಡರ್ಗೆ ಹೋಗುತ್ತವೆ, ಅಲ್ಲಿ ಶಾಶ್ವತವಾಗಿ ತೆಗೆದುಹಾಕದ ಹೊರತು ಅವುಗಳನ್ನು ಮರುಪಡೆಯಬಹುದು.
- ಬಹು ಫೋಲ್ಡರ್ಗಳಲ್ಲಿ ಇಮೇಲ್ಗಳನ್ನು ನಿರ್ವಹಿಸಲು MS ಗ್ರಾಫ್ ಅನ್ನು ಬಳಸುವ ಉತ್ತಮ ಅಭ್ಯಾಸ ಯಾವುದು?
- ಬಳಸಿ ಫೋಲ್ಡರ್ ರಚನೆಯನ್ನು ಯಾವಾಗಲೂ ಹಿಂಪಡೆಯಿರಿ ಮತ್ತು ಪರಿಶೀಲಿಸಿ ಕಾರ್ಯಾಚರಣೆಗಳನ್ನು ನಿರ್ವಹಿಸುವ ಮೊದಲು.
- MS ಗ್ರಾಫ್ ಬಳಸಿ ಒಂದೇ ಬಾರಿಗೆ ಬಹು ಇಮೇಲ್ಗಳನ್ನು ಅಳಿಸಲು ಸಾಧ್ಯವೇ?
- ಹೌದು, ನೀವು ಬಹು ಇಮೇಲ್ಗಳನ್ನು ಅಳಿಸಲು ವಿನಂತಿಗಳನ್ನು ಬ್ಯಾಚ್ ಮಾಡಬಹುದು ಆದರೆ ಪ್ರತಿ ವಿನಂತಿಯನ್ನು ಸರಿಯಾಗಿ ಅಧಿಕೃತಗೊಳಿಸಲಾಗಿದೆ ಮತ್ತು ಗುರಿಪಡಿಸಲಾಗಿದೆ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ.
ಮೈಕ್ರೋಸಾಫ್ಟ್ ಗ್ರಾಫ್ API ಅನ್ನು ಬಳಸಿಕೊಂಡು ನಿರ್ದಿಷ್ಟ ಉಪಫೋಲ್ಡರ್ನಿಂದ ಐಟಂ ಅನ್ನು ಯಶಸ್ವಿಯಾಗಿ ಅಳಿಸಲು API ನ ವಿಧಾನಗಳು ಮತ್ತು ಆಜ್ಞೆಗಳ ತಿಳುವಳಿಕೆ ಮತ್ತು ಸರಿಯಾದ ಅನ್ವಯದ ಅಗತ್ಯವಿದೆ. ವಿವರಿಸಿರುವ ಅಭ್ಯಾಸಗಳನ್ನು ಅನುಸರಿಸುವ ಮೂಲಕ, ಡೆವಲಪರ್ಗಳು ಉದ್ದೇಶವಿಲ್ಲದ ಸ್ಥಳಗಳಿಂದ ಇಮೇಲ್ಗಳನ್ನು ಅಳಿಸುವಂತಹ ಸಾಮಾನ್ಯ ಅಪಾಯಗಳನ್ನು ತಪ್ಪಿಸಬಹುದು. ಇದಲ್ಲದೆ, ಸರಿಯಾದ ಅನುಮತಿ ಸ್ಕೋಪ್ಗಳನ್ನು ಬಳಸುವುದು ಮತ್ತು ಅಳಿಸುವ ಕಾರ್ಯಾಚರಣೆಗಳನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುವ ಮೊದಲು ಫೋಲ್ಡರ್ ಮಾರ್ಗಗಳನ್ನು ಪರಿಶೀಲಿಸುವುದು ಮೇಲ್ಬಾಕ್ಸ್ ಡೇಟಾದ ರಚನೆ ಮತ್ತು ಸುರಕ್ಷತೆಯನ್ನು ಕಾಪಾಡಿಕೊಳ್ಳಲು ಸಹಾಯ ಮಾಡುವ ನಿರ್ಣಾಯಕ ಹಂತಗಳಾಗಿವೆ.