Before you need to update a page from a program I usually check the page state. Means, is the page in draft I cannot change anything on it. Therefore the following check methods are available:
CmsClient client = new CmsClient(logonGuid);
Project project = client.getProject(sessionKey, projectGuid);
Page currentPg = project.getPageById(“34009”);
The first method isInStateSavedAsDraft() is a simple combination of the both following savedAsDraft methods.
All of that methods look at the page state from a global point of view. The result of these methods did not depend on the pages the connected user has in his Tasks.
The method isChangeable() instead consider what pages the connect user has in workflow. Return isChangeable() true you are sure that the connected user can update the page. The currentPg is therefore in draft or globally released at all.
The last method getStateInfo() simply return a text describing the state in words.