pending task groovy
import groovy.json.JsonBuilder;
import groovy.sql.Sql;
import java.util.logging.Logger;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.sql.DataSource;
import org.bonitasoft.console.common.server.page.;
import org.bonitasoft.engine.api.;
import org.bonitasoft.engine.bdm.*;
import org.bonitasoft.engine.bpm.flownode.ActivityInstanceCriterion;
import org.bonitasoft.engine.bpm.flownode.HumanTaskInstance;
import org.bonitasoft.engine.business.data.SimpleBusinessDataReference;
import org.bonitasoft.engine.session.APISession;
import com.company.model.KneeSurgery;
import com.company.model.KneeSurgeryDAO;
//import com.company.model.KneeSurgeryDAO;
class Peningtask implements RestApiController {
RestApiResponse doHandle(HttpServletRequest request, PageResourceProvider pageResourceProvider, PageContext pageContext, RestApiResponseBuilder apiResponseBuilder, RestApiUtil restApiUtil) {
List<HumanTaskInstance> pendingTasks= new ArrayList();
List result=new ArrayList();
final LoginAPI loginAPI = TenantAPIAccessor.getLoginAPI();
//System.out.println("login with install//install");
final APISession session = pageContext.getApiSession();
/* final ProcessAPI processAPI = TenantAPIAccessor.getProcessAPI();
final List<HumanTaskInstance> pendingTasks =processAPI.getPendingHumanTaskInstances(3,
0, 20, ActivityInstanceCriterion.PRIORITY_ASC);*/
// System.out.println("Pending tasks for user " + session.getUserName() + ": " + pendingTasks);
try{
final ProcessAPI processAPI=TenantAPIAccessor.getProcessAPI(session);
pendingTasks =processAPI.getAssignedHumanTaskInstances(session.getUserId(),
0, 20, ActivityInstanceCriterion.PRIORITY_ASC);
//buildErrorResponse(apiResponseBuilder, "getProcessInstance="+processAPI.getProcessInstance(pendingTask.getParentProcessInstanceId()).toString(), restApiUtil.logger);
for ( HumanTaskInstance pendingTask : pendingTasks) {
buildErrorResponse(apiResponseBuilder, "For loop="+processAPI.getProcessInstance(pendingTask.getParentProcessInstanceId()).toString(), restApiUtil.logger);
BusinessDataAPI businessDataAPI = TenantAPIAccessor.getBusinessDataAPI(session);
result = businessDataAPI.getProcessBusinessDataReferences(pendingTask.getParentProcessInstanceId(), 0, 100);
BusinessObjectDAOFactory daoFactory = new BusinessObjectDAOFactory();
KneeSurgeryDAO ksD = daoFactory.createDAO(session, KneeSurgeryDAO.class);
SimpleBusinessDataReference sbdr=(SimpleBusinessDataReference)result[0];
buildErrorResponse(apiResponseBuilder, "SimpleBusinessDataReference="+sbdr, restApiUtil.logger);
//KneeSurgery ks = KneeSurgeryDAO.findByPersistenceId
try{
KneeSurgery ks= ksD.findByPersistenceId(sbdr.getStorageId())
buildErrorResponse(apiResponseBuilder, "KneeSurgery="+ks, restApiUtil.logger);
}catch(Exception e){
buildErrorResponse(apiResponseBuilder, "Kneesurgery Error="+e.getMessage(), restApiUtil.logger);
continue;
}
//findByPersistenceId(sbdr.getStorageId());
// KneeSurgeryDAO ks=
//processAPI.getProcessDataInstance("kneeReplacementInput",pendingTask.parentProcessInstanceId);
//AccessorUtil.getQueryDefinitionAPI().getProcessDataField(uuid,varName)
buildErrorResponse(apiResponseBuilder, "result="+result, restApiUtil.logger);
}
}catch(Exception e){
return buildErrorResponse(apiResponseBuilder, "Error="+e.getMessage(), restApiUtil.logger)
}
//System.out.println("logged out");
/*
String queryId = request.getParameter "queryId"
if (queryId == null) {
return buildErrorResponse(apiResponseBuilder, "the parameter queryId is missing",restApiUtil.logger)
}
String query = getQuery queryId, pageResourceProvider
if (query == null) {
return buildErrorResponse(apiResponseBuilder, "the queryId does not refer to an existing query", restApiUtil.logger)
}
Map<String, String> params = getSqlParameters request
Sql sql = buildSql pageResourceProvider*/
try {
def rows =pendingTasks+result;//"hello world";// params.isEmpty() ? sql.rows(query) : sql.rows(query, params)
JsonBuilder builder = new JsonBuilder(rows)
String table = builder.toPrettyString()
return buildResponse(apiResponseBuilder, table)
} finally {
// sql.close()
}
}
protected RestApiResponse buildErrorResponse(RestApiResponseBuilder apiResponseBuilder, String message, Logger logger ) {
logger.severe message
Map<String, String> result = [:]
result.put "error", message
apiResponseBuilder.withResponseStatus(HttpServletResponse.SC_BAD_REQUEST)
buildResponse apiResponseBuilder, result
}
protected RestApiResponse buildResponse(RestApiResponseBuilder apiResponseBuilder, Serializable result) {
apiResponseBuilder.with {
withResponse(result)
build()
}
}
}
displayName=Rest API extension - Generic DataSource
name=custompage_datasource
description=Rest API extension - Generic DataSource
#zip is a rest api extension
contentType=apiExtension
#list of api extension in zip
apiExtensions = datasource
datasource.method = GET
datasource.pathTemplate = pendingtask
datasource.classFileName = Peningtask.groovy
datasource.permissions = demoPermission
pom.xml
4.0.0
org.bonitasoft.example
rest-api-sql-datasource
1.0-SNAPSHOT
jar
<bonita.version>7.0.1</bonita.version>
<groovy.version>2.4.3-01</groovy.version>
maven-restlet
Public online Restlet repository
http://maven.restlet.com
javax.servlet
servlet-api
2.5
provided
org.bonitasoft.engine
bonita-client
${bonita.version}
compile
<dependency>
<groupId>org.bonitasoft.engine</groupId>
<artifactId>bonita-server</artifactId>
<version>7.1.5</version>
</dependency>
<!-- test -->
<dependency>
<groupId>org.restlet.jse</groupId>
<artifactId>org.restlet</artifactId>
<version>2.1.7</version>
<scope>test</scope>
</dependency>
<!-- <dependency> <groupId>org.spockframework</groupId> <artifactId>spock-core</artifactId>
<version>0.7-groovy-1.8</version> <scope>test</scope> </dependency> -->
<dependency>
<groupId>org.spockframework</groupId>
<artifactId>spock-core</artifactId>
<version>1.0-groovy-2.4</version>
</dependency>
<dependency> <!-- enables mocking of classes (in addition to interfaces) -->
<groupId>cglib</groupId>
<artifactId>cglib-nodep</artifactId>
<version>2.2</version>
<scope>test</scope>
</dependency>
<dependency> <!-- enables mocking of classes without default constructor (together with
CGLIB) -->
<groupId>org.objenesis</groupId>
<artifactId>objenesis</artifactId>
<version>1.2</version>
<scope>test</scope>
</dependency>
<!--........................................................... -->
<dependency>
<groupId>org.bonitasoft.bdm</groupId>
<artifactId>bdm-client-pojo</artifactId>
<version>0.0.2-SNAPSHOT</version>
<scope>system</scope>
<systemPath>C:\BonitaBPMSubscription-7.1.0\workspace\BonitaCareCoordination\lib</systemPath>
</dependency>
<dependency>
<groupId>org.bonitasoft.bdm</groupId>
<artifactId>bdm-model</artifactId>
<version>0.0.2-SNAPSHOT</version>
<scope>system</scope>
<systemPath>D:/bdm-model.jar</systemPath>
</dependency>
<dependency>
<groupId>org.javassist</groupId>
<artifactId>javassist</artifactId>
<version>3.18.1-GA</version>
</dependency>
<dependency>
<groupId>org.bonitasoft.engine</groupId>
<artifactId>bonita-client</artifactId>
<version>7.1.4</version>
</dependency>
<!-- .......................................................... -->
</dependencies>
<build>
<finalName>${project.artifactId}</finalName>
<resources>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
<sourceDirectory>src/main/groovy</sourceDirectory>
<testSourceDirectory>src/test/groovy</testSourceDirectory>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
<compilerId>groovy-eclipse-compiler</compilerId>
</configuration>
<dependencies>
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-eclipse-compiler</artifactId>
<version>2.9.2-01</version>
</dependency>
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-eclipse-batch</artifactId>
<version>${groovy.version}</version>
</dependency>
</dependencies>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.4.1</version>
<executions>
<execution>
<id>page-content</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<inherited>false</inherited>
<configuration>
<ignoreDirFormatExtensions>true</ignoreDirFormatExtensions>
<appendAssemblyId>false</appendAssemblyId>
<descriptors>
<descriptor>content.xml</descriptor>
</descriptors>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>