Skip to content

Checkin

rubendel edited this page Dec 1, 2014 · 19 revisions

Introduction

Checkin is the term used to upload complete models to a BIMserver. Because there are several ways to do it, and because it might not be very intuitive this page intends to clarify a few things.

Usual way

The usual way would be to call the checkin method on the Bimsie1ServiceInterface. Just look at the documentation for the method. It will return a topicId/checkinId, of which the use is explained (here)[# CheckinId / TopicId].

Any immediate exception will be in the return message as well, just as all other calls to BIMserver. See [https://github.com/opensourceBIM/BIMserver/wiki/JSON-API#Exception]

Other way

Because of the overhead of the different implementations of the Service Interfaces, and because of the nature of the checkin method (pushing a lot of data) there is another way. You can (HTTP) POST the data to /upload. The required fields are:

token: The token you are using, this is the token you get from calling login
deserializerOid: Id of the deserializer you want to use
comment: A comment for this checkin
merge: Whether to merge or not (not working properly, just keep it to false)
poid: Id of the project
sync: Whether to call this synchronous or not

The upload servlet will return a bit of json, the structure:

{
  checkinid: The checkinid
}

If something goes wrong, it will return:

{
  exception: A message
}

CheckinId / TopicId

CheckinId and TopicId are the same thing, should be renamed everywhere to TopicId.

Get progress

Bimsie1NotificationRegistryInterface.getProgress
{
topicId
}

This will return:

{
  state: "STARTED" | "DONE" | "NONE" | "AS_ERROR",
  stage: "Name of the stage",
  title: "Title",
  progress: Percentage
}

Register to be notified on a change in progress:

Bimsie1NotificationRegistryInterface.registerProgressHandler
{
topicId: topicId
endPointId: othis.server.endPointId
}

Read https://github.com/opensourceBIM/BIMserver/wiki/Endpoints to learn how to acquire an endPointId.

When there is new progress, the Bimsie1NotificationInterface.progress method will be called on the client.

{
  topicId: "",
  state: The same state object that is being returned by the call to Bimsie1NotificationRegistryInterface.getProgress.
}

Don't forget to unregister

Bimsie1NotificationRegistryInterface.unregisterProgressHandler
{
topicId: topicId
endPointId: othis.server.endPointId
}

Clone this wiki locally