Web Service API

Stardust provides Web Services with the same functionality as the appropriate services described in the chapter Stardust Services, adjusted to be able to use the Web Services technology.

Web Services provided by Stardust

Stardust provides the following Web Services:

AdministrationService

AdministrationService Web Service Operation Comments
DeploymentInfo deployModel(String model, int predecessorOID)
@Deprecated
see comments use deployModel(...)
DeploymentInfo overwriteModel(String model, int modelOID) see comments use overwriteModel(...)
DeploymentInfo deployModel(String model, String configuration, int predecessorOID, Date validFrom, Date validTo, String comment, boolean disabled, boolean ignoreWarnings)
@Deprecated
DeploymentInfoXto deployModel(
Integer predecessorOid, Date validFrom,
         Date validTo, String comment, Boolean disabled, Boolean ignoreWarnings,
         String configuration, XmlValueXto model
required parameters:
  • XmlValueXto model
DeploymentInfo overwriteModel(String model, String configuration, int modelOID, Date validFrom, Date validTo, String comment, boolean disabled, boolean ignoreWarnings)
@Deprecated
DeploymentInfoXto overwriteModel(
int modelOid, Date validFrom,
         Date validTo, String comment, Boolean disabled, Boolean ignoreWarnings,
         String configuration, XmlValueXto model)
required parameters:
  • XmlValueXto model
  • int modelOid
DeploymentInfo deleteModel(long modelOID) DeploymentInfoXto deleteModel(int modelOid) -
DeploymentInfo modifyModel(int modelOID, int predecessorOID, Date, Date, String, boolean) DeploymentInfoXto modifyModel(int modelOid, Integer predecessorOid,
         Date validFrom, Date validTo, String comment, boolean disabled)
required parameters:
  • int modelOid
void deleteProcesses(List<Long> piOids) void deleteProcesses(OidsXto oids) -
void cleanupRuntime(boolean keepUsers) void cleanupRuntime(boolean keepUsers) -
void cleanupRuntimeAndModels() void cleanupRuntimeAndModels() -
ProcessInstance setProcessInstancePriority(long, int) see comment use setProcessInstancePriority(long, int, null)
ProcessInstance setProcessInstancePriority(long, int, boolean) ProcessInstanceXto setProcessInstancePriority(long oid, int priority, Boolean propagateToSubProcesses) -
ProcessInstance abortProcessInstance(long) ProcessInstanceXto abortProcessInstance(long oid) -
ProcessInstance recoverProcessInstance(long) - -
void recoverProcessInstances(List<Long>) void recoverProcessInstances(OidsXto oids) -
Daemon getDaemon(String, boolean) DaemonsXto getDaemonStatus(DaemonParametersXto daemonParameters) if DaemonParameters element is empty or not existing: All Daemons are returned
Daemon stopDaemon(String, boolean) DaemonsXto stopDaemon(DaemonParametersXto daemonParameters) -
Daemon startDaemon(String, boolean) DaemonsXto startDaemon(DaemonParametersXto daemonParameters) -
List<Deamon> getAllDaemons(boolean) - Use getDaemonStatus
AuditTrailHealthReport getAuditTrailHealthReport() AuditTrailHealthReportXto getAuditTrailHealthReport() -
void recoverRuntimeEnvironment() void recoverRuntimeEnvironment() -
ProcessInstance startProcess(long, String, Map<String, Object>, boolean) ProcessInstanceXto startProcessForModel(long modelOid, String processId,
         ParametersXto parameters, Boolean startSynchronously,
         InputDocumentsXto attachments)
if InputDocumentsXto is used, the Documents are added as ProcessAttachments or Specific Documents. If the passed document is assigned to a document data, in the JCR folder the document is persisted in by convention: /ipp-respository/partitions/<partionId>/process-instances/<yyyy>/<MM>/<dd>/<HH>/pi-<OID>/specific-documents
If the passed document is put into the process attachments, in the JCR folder the document is persisted in by convention: /ipp-respository/partitions/<partionId>/process-instances/<yyyy>/<MM>/<dd>/<HH>/pi-<OID>/process-attachments
ActivityInstance forceCompletion(long, Map<String, Object>) ActivityInstanceXto forceCompletion(long activityOid,
         ParametersXto outDataValues)
-
ActivityInstance forceSuspendToDefaultPerformer(long) ActivityInstanceXto forceSuspend(long activityOid) -
User getUser() UserXto getSessionUser() -
void flushCaches() void flushCaches() -
List<Permission> getPermissions() PermissionsXto getPermissions() -
Map<String,Object> getProfile(ProfileScope) - -
void setProfile(ProfileScope, Map<String, Object>) - -
void writeLogEntry(LogType, ContextKind, long, String, Throwable) void writeLogEntry(LogTypeXto logType, Long activityOid, Long processOid,
         String message)
Setting processOid or activityOid defines ContextKind.
Throwable not supported.
PasswordRules getPasswordRules() PasswordRulesXto getPasswordRules() -
void setPasswordRules(PasswordRules rules) void setPasswordRules(PasswordRulesXto passwordRules) -
Department createDepartment(String id, String name, String description, DepartmentInfo parent, OrganizationInfo organization) DepartmentXto createDepartment(String id, String name, String description, DepartmentInfoXto parent, OrganizationInfoXto organization) -
Department getDepartment(long oid) DepartmentXto getDepartment(long oid) -
Department modifyDepartment(long oid, String name, String description) DepartmentXto modifyDepartment(long oid, String name, String description) -
void removeDepartment(long oid) void removeDepartment(long oid) -
Preferences getPreferences(PreferenceScope scope, String moduleId, String preferencesId) PreferencesXto getPreferences(PreferencesScopeXto scope, String moduleId, String preferencesId) -
void savePreferences(Preferences preferences) use savePreferences(PreferencesListXto preferences)
void savePreferences(List<Preferences> preferences) void savePreferences(PreferencesListXto preferences)
ConfigurationVariables getConfigurationVariables(String modelId) List<ConfigurationVariables> getConfigurationVariables(List<String> modelIds)
ConfigurationVariables getConfigurationVariables(byte[] model) List<ModelReconfigurationInfo> saveConfigurationVariables(ConfigurationVariables configurationVariables, boolean force)
RuntimePermissions getGlobalPermissions() void setGlobalPermissions(RuntimePermissions permissions)

DocumentManagementService

DocumentManagementService Web Service Operation Comments
Document getDocument(String documentId) DocumentXto getDocument(String documentId, QName metaDataType) -
List getDocumentVersions(String folderId) DocumentsXto getDocumentVersions(String documentId, QName metaDataType) -
List getDocuments(List documentIds) DocumentsXto getDocuments(DocumentIdsXto documentIds, QName metaDataType) -
List findDocumentsByName(String namePattern) DocumentsXto findDocuments(DocumentQuery documentQuery) use namePattern element
List findDocuments(String expression) DocumentsXto findDocuments(DocumentQuery documentQuery) use xPathQuery element
byte[] retrieveDocumentContent(String docId) base64Binary getDocumentContent(String documentId) -
String requestDocumentContentDownload(String documentId) String requestDocumentContentDownload(String documentId) -
Folder getFolder(String folderId) FolderXto getFolder(String folderId, FolderLevelOfDetailXto , QName documentMetaDataType, QName folderMetaDataType) if 2ndParameter is null
Folder getFolder(String folderId, int levelOfDetail) FolderXto getFolder(String folderId, FolderLevelOfDetailXto folderLevelOfDetail, QName documentMetaDataType, QName folderMetaDataType) -
List getFolders(List folderIds, int levelOfDetail) FoldersXto getFolders(FolderIdsXto folderIds,
         FolderLevelOfDetailXto folderLevelOfDetail, QName documentMetaDataType,
         QName folderMetaDataType)
-
List findFoldersByName(String namePattern, int levelOfDetail) FoldersXto findFolders(FolderQueryXto folderQuery) use namePattern element
List findFolders(String expression, int levelOfDetail) FoldersXto findFolders(FolderQueryXto folderQuery) use xPathQuery element
Document createDocument(String folderId, DocumentInfo document) DocumentXto createDocument(String folderId, boolean createMissingFolders, DocumentInfoXto documentInfo, DataHandler content, DocumentVersionInfoXto versionInfo) if the DataHandler value is null
Document createDocument(String folderId, DocumentInfo document, byte[] content, String encoding) DocumentXto createDocument(String folderId, boolean createMissingFolders, DocumentInfoXto documentInfo, DataHandler content, DocumentVersionInfoXto versionInfo) -
Document versionDocument(String documentId, String versionLabel) DocumentXto versionDocument(String documentId, String versionLabel) -
Document updateDocument(Document document, boolean createNewRevision, String versionLabel, boolean keepLocked) see comment use updateDocument with parameter:
DataHandler = null
Document updateDocument(Document document, byte[] content, String encoding, boolean createNewRevision, String versionLabel, boolean keepLocked) DocumentXto updateDocument(String documentId, DocumentInfoXto documentInfo, DataHandler content, DocumentVersionInfoXto versionInfo) -
String requestDocumentContentUpload(String documentId) String requestDocumentContentUpload(String documentId) -
void removeDocument(String documentId) void removeDocument(String documentId) -
Folder createFolder(String parentFolderId, FolderInfo folder) FolderXto createFolder(String parentFolderId, FolderInfoXto folderInfo) -
Folder updateFolder(Folder folder) FolderXto updateFolder(FolderXto updateFolder) -
void removeFolder(String folderId, boolean recursive) void removeFolder(String folderId, Boolean recursive) default value for parameter:
recursive = false
Set<AccessControlPolicy> getApplicablePolicies(String resourceId) see comment use getPolicies with:
policyScope = APPLICABLE
Set<AccessControlPolicy> getEffectivePolicies(String resourceId) see comment use getPolicies with:
policyScope = EFFECTIVE
Set<AccessControlPolicy> getPolicies(String resourceId) AccessControlPoliciesXto getPolicies(String resourceId, PolicyScopeXto policyScope) policyScope = ALL
Set<Privilege> getPrivileges(String resourceId) PrivilegesXto getPrivileges(String resourceId) -
void setPolicy(String resourceId, AccessControlPolicy policy) void setPolicy(String resourceId, AccessControlPolicy policy) -
RepositoryMigrationReport migrateRepository(int batchSize,
         boolean evaluateTotalCount)
RepositoryMigrationReportXto migrateRepository(int batchSize, boolean evaluateTotalCount) -
- DocumentTypeResultsXto getDocumentTypes(String modelId) modelId = null. Maps to all valid models.
byte[] getSchemaDefinition(String schemaLocation) XmlValueXto getDocumentTypeSchema(String schemaLocation)

QueryService

QueryService Web Service Operation Comments
long getUsersCount(UserQuery) - use findUsers with SubsetPolicy
long getUserGroupsCount(UserGroupQuery) - use findUserGroups with SubsetPolicy
long getProcessInstancesCount(ProcessInstanceQuery) - use findProcesses with SubsetPolicy
long getActivityInstancesCount(ActivityInstanceQuery) - use findActivities with SubsetPolicy
long getLogEntriesCount(LogEntryQuery) - use findLogEntries with SubsetPolicy
Users getAllUsers(UserQuery) UserQueryResultXto findUsers(UserQueryXto userQuery) see UserQuery
UserGroups getAllUserGroups(UserGroupQuery) UserGroupQueryResultXto findUserGroups(UserGroupQueryXto userGroupQuery) see UserGroupQuery
ProcessInstances getAllProcessInstances(ProcessInstanceQuery) ProcessInstanceQueryResultXto
findProcesses(ProcessInstanceQueryXto query)
see ProcessInstanceQuery
ActivityInstances getAllActivityInstances(ActivityInstanceQuery) ActivityQueryResultXto
findActivities(ActivityQueryXto query)
see ActivityQuery
LogEntries getAllLogEntries(LogEntryQuery) LogEntryQueryResult findLogEntries(LogEntryQueryXto logEntryQuery) see LogEntryQuery
User findFirstUser(UserQuery) - use findUsers with SubsetPolicy
UserGroup findFirstUserGroup(UserGroupQuery) - use findUserGroups with SubsetPolicy
ProcessInstance findFirstProcessInstance(ProcessInstanceQuery) - use findProcesses with SubsetPolicy
ActivityInstance findFirstActivityInstance(ActivityInstanceQuery) - use findActivities with SubsetPolicy
LogEntry findFirstLogEntry(LogEntryQuery) - use findLogEntries with SubsetPolicy
List<ActivityInstance> getAuditTrail(long) - -
List<DeployedModelDescription> getAllModelDescriptions()
@deprecated
ModelDescriptionsXto getAllModelDescriptions() -
List<DeployedModelDescription> getAllAliveModelDescriptions()
@deprecated
ModelDescriptionsXto getAllAliveModelDescriptions() -
DeployedModelDescription getActiveModelDescription()
@deprecated
see comment use getModelDescription(Long modelOid) with parameter:
Long modelOid = null
(the active model's description is returned)
DeployedModelDescription getModelDescription(long) ModelDescriptionXto getModelDescription(Long modelOid) -
boolean wasRedeployed(long modelOid, int revision) boolean wasRedeployed(long modelOid, int revision) -
DeployedModel getModel(long modelOid) see comment use getModel() with parameter:
Boolean computeAliveness = null
DeployedModel getModel(long modelOid, boolean computeAliveness) ModelXto getModel(Long modelOid, Boolean computeAliveness
  • If Long modelOid is null, the modelOid of the ActiveModel is used internally
  • Boolean computeAliveness default value is false
DeployedModel getActiveModel() see comment use getModel() with parameter:
Long modelOid = null
Boolean computeAliveness = null
String getModelAsXML(long modelOid) XmlValueXto getModelAsXml(Long modelOid) if Long modelOid = null, the active model is used
List<ProcessDefinition> getAllProcessDefinitions(long modelOid) ProcessDefinitionsXto getAllProcessDefinitions(Long modelOid) -
ProcessDefinition getProcessDefinition(long processId, String modelOid) ProcessDefinitionXto getProcessDefinition(String processId, Long modelOid) -
List<ProcessDefinition> getAllProcessDefinitions() see comment use getAllProcessDefinitions(Long modelOid) with parameter:
Long modelOid = null
ProcessDefinition getProcessDefinition(String id) see comment use getProcessDefinition(String processId, Long modelOid) with parameter:
modelOid = null
DataQueryResult getAllData(DataQuery query) VariableDefinitionQueryResultXto findVariableDefinitions(VariableDefinitionQueryXto) -
List<Participant> getAllParticipants(long modelOid) ParticipantsXto getAllParticipants(Long modelOid) -
Participant getParticipant(long modelOid, String id) ParticipantXto getParticipant(String participantId, Long modelOid) -
List<Participant> getAllParticipants() see comment use getAllParticipants(Long modelOid) with parameter:
modelOid = null
Participant getParticipant(String id) see comment use getParticipant(String participantId, Long modelOid) with parameter:
modelOid = null
List<Permission> getPermissions() PermissionsXto getPermissions() -
byte[] getSchemaDefinition(long modelOid, String typeDeclarationId) XmlValueXto getSchemaDefinition(QName type, Long modelOid) if modelOid = null, the active model is used
Document findFirstDocument(DocumentQuery query) - deprecated - use findDocuments with SubsetPolicy
Documents getAllDocuments(DocumentQuery query) DocumentQueryResultXto getAllDocuments(DocumentQueryXto) see DocumentQuery
ProcessDefinitions getProcessDefinitions(ProcessDefinitionQuery query) ProcessDefinitionQueryResultXto findProcessDefinitions(ProcessDefinitionQueryXto query) see ProcessDefinitionQuery
Preferences getPreferences(PreferenceScope scope, String moduleId, String preferencesId) PreferencesXto getPreferences (PreferencesScopeXto scope, String moduleId, String preferencesId)
List <Preferences> getAllPreferences(PreferenceQuery preferenceQuery) PreferencesListXto findPreferences(PreferencesQueryXto query)
Models getModels(DeployedModelQuery) ModelsQueryResultXto findModels (DeployedModelsQueryXto query)

UserService

UserService Web Service Operation Comments
String startSession(String) - -
String closeSession(String) - -
boolean isInternalAuthentified() (@deprecated) - -
boolean isInternalAuthentication() boolean isInternalAuthentication() -
boolean isInternalAuthorization() boolean isInternalAuthorization() -
User getUser() UserXto getSessionUser() -
User modifyLoginUser(String oldPassword, String firstName, String lastName,
         String newPassword, String eMail)
- -
User modifyUser(User user) see comment use UserXto modifyUser(UserXto, false)
User modifyUser(User user, boolean generatePassword) UserXto modifyUser(UserXto user, Boolean generatePassword) -
User createUser(String account, String firstName, String lastName, String description,
         String password, String eMail, Date validFrom, Date validTo)
see comment use createUser(UserXto)
User createUser(String realm, String account, String firstName, String lastName, String description, String password, String eMail, Date validFrom, Date validTo) UserXto createUser(UserXto user) -
User getUser(String account) - use QueryService UserQuery
User getUser(String realm, String account) - use QueryService UserQuery
User getUser(long oid) UserXto getUser(long oid) -
User invalidateUser(String account) see comment use invalidateUser(String,null)
User invalidateUser(String realm, String account) UserXto invalidateUser(String accountId,String realmId) -
UserGroup createUserGroup(String id, String name, String description, Date validFrom, Date validTo) UserGroupXto createUserGroup(UserGroupXto userGroup) -
UserGroup getUserGroup(String id) - use QueryService UserGroupQuery
UserGroup getUserGroup(long oid) UserGroupXto getUserGroup(long oid) -
UserGroup modifyUserGroup(UserGroup userGroup) UserGroupXto modifyUserGroup(UserGroupXto userGroup) -
UserGroup invalidateUserGroup(String id) see comment use
invalidateUserGroup(null,String)
UserGroup invalidateUserGroup(long oid) UserGroupXto invalidateUserGroup(Long userGroupOid, String userGroupId) use
invalidateUserGroup(long,null)
UserRealm createUserRealm(String id, String name, String description) UserRealmXto createUserRealm(String id, String name, String description) -
void dropUserRealm(String id) void dropUserRealm(String id) -
List getUserRealms() List<UserRealmXto> getUserRealms() -
void resetPassword(String account, Map properties) void resetPassword(String account, MapXto properties) -
List getDeputies(UserInfo user) DeputiesXto addDeputy(UserInfoXto userXto)
Deputy modifyDeputy(UserInfo user, UserInfo deputyUser, DeputyOptions options) see comment use DeputyXto modifyDeputy(UserInfoXto userXto, UserInfoXto deputyUserXto, DeputyOptionsXto optionsXto)
Deputy addDeputy(UserInfo user, UserInfo deputyUser, DeputyOptions options) see comment use DeputyXto addDeputy(UserInfoXto userXto, UserInfoXto deputyUserXto, DeputyOptionsXto optionsXto)
void removeDeputy(UserInfo user, UserInfo deputyUser) see comment use removeDeputy(UserInfoXto userXto, UserInfoXto deputyUserXto)
List getUsersBeingDeputyFor(UserInfo deputyUser) DeputiesXto getUsersBeingDeputyFor(UserInfoXto deputyUserXto)

Supported Complex Data Types

For UserService the complex type called User is used differently for:

CreateUser

For the create user operation the following User type elements can be used. All other elements are ignored.

Element Name Type minOccurs
accountId string
firstName string 0
lastName string 0
password string 0
eMail string 0
validFrom dateTime 0
validTo dateTime 0
description string 0
userRealm tns:UserRealm 0

Example - CreateUser

<api:createUser>
<api:user>
<api:accountId>lcarnot</api:accountId>
<api:firstName>Leonard</api:firstName>
<api:lastName>Carnot</api:lastName>
<api:password>pwd</api:password>
<api:eMail>a.b@c.de</api:eMail>
<api:description>This is a description.</api:description>
</api:user>
</api:createUser>

Modify User

Modifying a user is best accomplished by modifying a User formerly retrieved via an API operation. For example, getUser. The elements userGroups or grants are used to add or remove user groups and grants to or from a user. If the userGroups or the grants element do not exist at all, the user groups or grants are not modified. If an empty element of userGroup or grants is used, all user groups or grants are removed from the user.

For the modifyUser operation following elements can be used to modify a user. All other elements are ignored so a User element formerly retrieved from the API can just be modified and used as input for a modifyUser operation. The oid element is mandatory.

Element Name Type minOccurs
oid long 0
accountId string
passwordExpired boolean
firstName string 0
lastName string 0
eMail string 0
validFrom dateTime 0
validTo dateTime 0
description string 0
userGroups tns:UserGroups 0
grants tns:Grants 0
attributes tns:Attributes 0

Example - Adding a grant for Administrator role.

<api:modifyUser>
<api:user>
<api:oid>3</api:oid>
<api:accountId>lcarnot</api:accountId>
<api:firstName>Leonard</api:firstName>
<api:lastName>Carnot</api:lastName>
<api:eMail>f.g@h.ij</api:eMail>
<api:description>This is a changed description.</api:description>
<api:grants>
<api:grant> <api:id>Administrator</api:id>
</api:grant>
</api:grants>
</api:user>
</api:modifyUser>

User as Return Type

The following elements are used for returned User types resulting from Web service operations.

Element Name Type minOccurs
oid long 0
accountId string
firstName string 0
lastName string 0
previousLoginTime dateTime 0
eMail string 0
validFrom dateTime 0
validTo dateTime 0
description string 0
detailsLevel int 0
userRealm tns:UserRealm 0
userGroups tns:UserGroups 0
grants tns:Grants 0
attributes tns:Attributes 0
passwordExpired boolean

Example

    
    <modifiedUser>
<oid>3</oid>
<accountId>lcarnot</accountId>
<firstName>Leonard</firstName>
<lastName>Carnot</lastName>
<eMail>f.g@h.ij</eMail>
<description>This is a changed description.</description>
<detailsLevel>3</detailsLevel>
<userRealm>
<oid>1</oid>
<id>carnot</id>
<name>CARNOT</name>
<partitionOid>1</partitionOid>
<partitionId>default</partitionId>
</userRealm>
<grants>
<grant>
<id>Administrator</id>
<name>Administrator</name>
<modelOid>1</modelOid>
<elementOid>10044</elementOid>
<organization>false</organization>
</grant>
</grants>
<passwordExpired>false</passwordExpired>
</modifiedUser>

WorkflowService

WorkflowService Web Service Operation Comments
ActivityInstance activate(long activityInstanceOID) ActivityInstanceXto activateActivity(long activityOid) -
ActivityInstance activateNextActivityInstance(long activityInstanceOID) ActivityInstanceXto activateNextActivity(Long activityOid, WorklistQueryXto worklistQuery)
ActivityInstance activateNextActivityInstance(WorklistQuery query) ActivityInstanceXto activateNextActivity(Long activityOid, WorklistQueryXto worklistQuery)
- ParametersXto activateActivityAndGetInData(long activityOid, String context) -
ActivityInstance complete(long activityInstanceOID, String context, Map<String, Object> outData) ActivityInstanceXto completeActivity(long activityOid, String context, ParametersXto outData, Boolean activate) if parameter Boolean activate is false or null
ActivityCompletionLog complete(long activityInstanceOID, String context, Map<String, Object> outData, int flags) ActivityInstancesXto completeActivityAndActivateNext(long activityOid, String context, ParametersXto outData, Boolean activate) if parameter Boolean activate is false or null
ActivityInstance activateAndComplete(long activityInstanceOID, String context, Map<String, Object> outData) ActivityInstanceXto completeActivity(long activityOid, String context, ParametersXto outData, Boolean activate) if parameter Boolean activate is true
ActivityCompletionLog activateAndComplete(long activityInstanceOID, String context, Map<String, Object> outData, int flags) ActivityInstancesXto completeActivityAndActivateNext(long activityOid, String context, ParametersXto outData, Boolean activate) if parameter Boolean activate is true
Serializable getInDataValue(long activityInstanceOID, String, String) - -
Map getInDataValues(long activityInstanceOID, String context, Set<String> ids) ParametersXto getActivityInData(long activityOid, String context, DataIdsXto dataIds) dataIds is optional for limiting results
Map getInDataValues(long, String) (@deprecated) - -
ActivityInstance suspend(long activityInstanceOID, ContextData outData) see comment use suspendActivity with parameter:
participant = null
ActivityInstance suspendToDefaultPerformer(long activityInstanceOID) see comment use suspendActivity with parameter:
context = null
participant = DefaultParticipant
ActivityInstance suspendToDefaultPerformer(long activityInstanceOID, String context, Map<String, Object> outData) ActivityInstanceXto suspendActivity(long activityOid, ParticipantInfoBaseXto participant, String context, ParametersXto outDataValues) use suspendActivity with parameter:
participant = DefaultParticipant
ActivityInstance suspendToUser(long activityInstanceOID) see comment use suspendActivity with parameter:
context = null
participant = UserInfo with oid -10
ActivityInstance suspendToUser(long activityInstanceOID, String context, Map<String, Object> outDataValues) see comment use suspendActivity with parameter:
participant = UserInfo with oid -10
ActivityInstance suspendToUser(long activityInstanceOID, long userOID) see comment use suspendActivity with parameter: 
context = null
participant = UserInfo
ActivityInstance suspendToUser(long activityInstanceOID, long userOID String context, Map<String, Object> outData) see comment use suspendActivity with parameter:
participant = UserInfo
ActivityInstance suspendToParticipant(long activityInstanceOID, String participant) see comment use suspendActivity with parameter: 
context = null
participant = RoleInfo
ActivityInstance suspendToParticipant(long, String participant, String context, Map<String, Object> outData) see comment use suspendActivity with parameter:
participant = RoleInfo
ActivityInstance hibernate(long activityInstanceOID) ActivityInstanceXto hibernateActivity(long activityOid) -
ProcessInstance startProcess(String id, Map<String, Object> data, boolean synchronously) ProcessInstanceXto startProcess(String processId, ParametersXto parameters,
         Boolean startSynchronously, InputDocumentsXto attachments)
if InputDocumentsXto is used, the Documents are added as ProcessAttachments or Specific Documents. If the passed document is assigned to a document data, in the JCR folder the document is persisted in by convention: /ipp-repository/partitions/<partionId>/process-instances/<yyyy>/<MM>/<dd>/<HH>/pi-<OID>/specific-documents
If the passed document is put into the process attachments, in the JCR folder the document is persisted in by convention: /ipp-repository/partitions/<partionId>/process-instances/<yyyy>/<MM>/<dd>/<HH>/pi-<OID>/process-attachments
ProcessInstance abortProcessInstance(long) (@deprecated) - -
ProcessInstance spawnSubprocessInstance(long parentProcessInstanceOid, String spawnProcessID, boolean copyData, Map<String, ?> data); see comment use spawnSubprocessInstances
List<ProcessInstance> spawnSubprocessInstances (long parentProcessInstanceOid, List<SubprocessSpawnInfo> subprocessSpawnInfo); ProcessInstancesXto spawnSubprocessInstances(long processInstanceOid, ProcessSpawnInfosXto processSpawnInfos) -
ProcessInstance spawnPeerProcessInstance( long processInstanceOid, String spawnProcessID, boolean copyData, Map<String, ?> data, boolean abortProcessInstance, String comment); ProcessInstancesXtospawnPeerProcessInstance(long processInstanceOid, String spawnProcessId, boolean copyData, ParametersXto parameters, boolean abortProcessInstance, String comment) -
ProcessInstance createCase(String name, String description, long[] memberOids) ProcessInstanceXto createCase(String name, String description, OidListXto memberOids) -
ProcessInstance joinCase(long caseOid, long[] memberOids) ProcessInstanceXto joinCase(long caseOid, OidListXto memberOids) -
ProcessInstance leaveCase(long caseOid, long[] memberOids ProcessInstanceXto leaveCase(long caseOid, OidListXto memberOids) -
ProcessInstance mergeCases(long targetCaseOid, long[] sourceCaseOids, String comment) ProcessInstance mergeCases(long targetCaseOid, long[] sourceCaseOids, String comment) -
ProcessInstance delegateCase(long caseOid, ParticipantInfo participant) ProcessInstanceXto delegateCase(long caseOid, ParticipantInfoXto participantInfo) -
ProcessInstance joinProcessInstance(long processInstanceOid, long targetProcessInstanceOid, String comment) joinProcessInstance(long processInstanceOid, long targetProcessInstanceOid, String comment) -
ActivityInstance abortActivityInstance(long activityInstanceOID) see comment use abortActivity with parameter:
abortScope = null
ActivityInstance abortActivityInstance(long activityInstanceOID, AbortScope abortScope) ActivityInstanceXto abortActivity(long activityOid, AbortScopeXto abortScope) -
ProcessInstance abortProcessInstance(long processInstanceOid, AbortScope abortScope) ProcessInstanceXto abortProcessInstance(long oid, AbortScopeXto abortScope) -
DeployedModel getModel() - use QueryService
Worklist getWorklist(WorklistQuery) WorklistXto findWorklist(WorklistQueryXto worklistQuery) -
ActivityInstance activateNextActivityInstance(long activityInstanceOID) ActivityInstanceXto activateNextActivity(long activityOid) -
ActivityInstance activateNextActivityInstanceForProcessInstance(long processInstanceOID) ActivityInstanceXto activateNextActivityForProcess(long processOid) -
void setOutDataPath(long, String, Object) - use setProcessProperties()
void setOutDataPaths(long, Map<String, Object>) void setProcessProperties(long processInstanceOid, InstancePropertiesXto propertyIds) -
Object getInDataPath(long, String) - -
Map getInDataPaths(long, Set<String>) InstancePropertiesXto getProcessProperties(long processInstanceOid, PropertyIdsXto propertyIds) -
ActivityInstance delegateToDefaultPerformer(long activityInstanceOID) ActivityInstanceXto delegateActivity(long activityOid, ParticipantInfoBaseXto participant) use delegateActivity with parameter:
participant = DefaultParticipant
ActivityInstance delegateToUser(long activityInstanceOID, long userOID) see comment use delegateActivity with parameter:
participant = UserInfo
ActivityInstance delegateToParticipant(long activityInstanceOID, String performer) see comment use delegateActivity with parameter:
participant = RoleInfo
ActivityInstance getActivityInstance(long activityInstanceOID) ActivityInstanceXto getActivity(long activityOid) -
ProcessInstance getProcessInstance(long processInstanceOID) ProcessInstanceXto getProcess(long processOid) -
ActivityInstance bindActivityEventHandler(long activityInstanceOID, EventHandlerBinding) ActivityEventBindingXto createActivityEventBinding(long processOid,
         ProcessEventBindingXto bindingInfo)
-
ProcessInstance bindProcessEventHandler(long processInstanceOID, EventHandlerBinding) ProcessEventBindingXto createProcessEventBinding(long processOid,
         ProcessEventBindingXto bindingInfo)
-
ActivityInstance bindActivityEventHandler(long processInstanceOID, activityInstanceOID, String handler) - -
ProcessInstance bindProcessEventHandler(long processInstanceOID, String handler) - -
ActivityInstance unbindActivityEventHandler(long activityInstanceOID, String) ActivityEventBindingXto removeActivityEventBinding(long processOid,
         String eventHandlerId)
-
ProcessInstance unbindProcessEventHandler(long processInstanceOID, String) ProcessEventBindingXto removeProcessEventBinding(long processOid,
         String eventHandlerId)
-
EventHandlerBinding getActivityInstanceEventHandler(long activityInstanceOID, String) ActivityEventBindingXto getActivityEventBinding(long processOid,
         String eventHandlerId)
-
EventHandlerBinding getProcessInstanceEventHandler(long processInstanceOID, String) ProcessEventBindingXto getProcessEventBinding(long processOid,
         String eventHandlerId)
-
List getStartableProcessDefinitions() ProcessDefinitionsXto getStartableProcessDefinitions() -
User getUser() UserXto getSessionUser() -
List getPermissions() PermissionsXto getPermissions() -
void setProcessInstanceAttributes(ProcessInstanceAttributes attributes) - handled in get/setProcessProperties
void writeLogEntry(LogType, ContextKind contextType, long contextOid, String message, Throwable throwable) void writeLogEntry(LogTypeXto logType, Long activityOid, Long processOid,
         String message)
Setting processOid or activityOid defines ContextKind.
Throwable not supported.
List<Department> findAllDepartments(DepartmentInfo parent,
         OrganizationInfo organization)
DepartmentsXto findAllDepartments(DepartmentInfoXto parent, OrganizationInfoXto organization) -
Department findDepartment(DepartmentInfo parent, String id,
         OrganizationInfo organization)
DepartmentXto findDepartment(DepartmentInfoXto parent, OrganizationInfoXto organization, String id) -

Supported Data Types

The following Java style data types are supported for the Web services:

Primitive Data Type

Primitive DataType Mapped Type
String string
Integer int
Long long
Boolean boolean
Float float
Double double
Byte byte
Short short
Timestamp dateTime
Character *api:Char (Base64 encoded string)
Calendar Base64Binary
Enumeration string

Structured Data Type

Structured DataType Cardinality Mapped Type
SimpleType Exactly one Primitive
SimpleType Zero or more XML with list of Primitives
ComplexType Exactly one XML (using xsd from model)
ComplexType Zero or more XML (using xsd from model)

DMS Data Type

DMS DataType Mapped Type
Document api:Document
Documents api:Documents
Folder api:Folder
Folders api:Folders

Serializable Data Type

Serializable DataType Mapped Type
Primitive Primitive
Non Primitive Base64Binary

Entity Bean Data Type

Entity DataType Mapped Type
Primitive Primitive
Non-Primitive Not Supported

Controlling the Service Factory Cache Behavior

To control the service factory cache timeout, set Carnot.WebService.SessionCache.Timeout property in carnot.properties file. For as long as the user is using it, the session is extended. So with the Timeout property you can specify explicitly how long a service factory is maintained in the cache. If this property is not specified, it defaults to 300 seconds. You can specify any integer value in seconds, from 1 second upwards.

To renew the entry timestamp, set Carnot.WebService.SessionCache.RenewOnAccess property in your carnot.properties file.

By default, this property is true. Each time the user is using a ServiceFactory from the cache, the expiration time is reset to the last access time + timeout value. The validity of the ServiceFactory is extended with every access. If this property is explicitly set to false, the validity period of the ServiceFactory is no longer extended. After the Timeout period, it is automatically removed from the cache, regardless it is accessed or not.

For information about these properties residing in the carnot.properties file, please refer to the Service section of the Server Side Properties chapter.

Enabling Re-authentication for Web Service Session Factory

Re-authentication is performed in case re-authentication properties exist. These re-authentication properties are only transferred in case the following property is set in your server-side carnot.properties file:

Carnot.WebService.SessionCache.ReAuthenticationInterval = 0

The default value of this property is -1, which does not add any re-authentication properties.

Note
This property only works with tunneling EJB mode and Spring!

Examples

Stardust provides both, a Java and a C# client example that illustrate how to communicate with Stardust Web Services:

You can download the examples as zip files from the locations mentioned in the above links.