0

当我尝试使用 createquery api 查询队列以获取队列元素时,我遇到了一个问题。

我在 while 语句中收到错误,将以下错误声明为

errorjava.lang.illegalstateexception : 未读块数据

我不知道为什么我会收到这个错误。我可以使用 fetchcount() api 来获取队列中工作项的计数,但是 haveext() api 不起作用,next() 也不起作用。

这个语句没有被执行有什么原因。这与任何java问题有关吗?任何人都可以帮助

代码是

VWSession session = new VWSession(); 
session.setBootstrapCEURI(Ceuri); 
session.logon(cename, fnPassword, connectionPoint); 
VWQueue queue = session.getQueue(queue)); 
int queryFlag = VWQueue.QUERY_NO_OPTIONS; 
int fetchType = VWFetchType.FETCH_TYPE_STEP_ELEMENT; 
VWQueueQuery queueQuery = queue.createQuery(null,null, null,queryFlag, null, null, fetchType); 
while (queueQuery.hasNext()) { 
   queueElement = (VWStepElement) queueQuery.next(); 
} 
4

1 回答 1

0

在您的主要(调用)方法中,执行以下操作:

    VWSession vwsession = new VWSession();
    vwsession.setBootstrapCEURI("http://servername:9080/wsi/FNCEWS40MTOM/");
    vwsession.logon("userid", "password", "ConnPTName");
    IteratePEWorkItems queueTest = new IteratePEWorkItems();
    queueTest.testQueueElements(vwsession);

稍后创建下面提到的辅助方法:

public void testQueueElements(VWSession vwsession) {
    System.out.println("Inside getListOfWorkitems: : ");
    VWRoster roster = vwsession.getRoster("DefaultRoster");
    int fetchType = VWFetchType.FETCH_TYPE_STEP_ELEMENT;
    int queryFlags = VWQueue.QUERY_READ_UNWRITABLE;
    try {
        dispatchWorkItems(roster, fetchType, queryFlags, vwsession);
    } catch (Exception exception) {
        log.error(exception.getMessage());
    }
}

public void dispatchWorkItems(VWRoster roster, int fetchType, int queryFlags, VWSession vwsession) {
    String filter = "SLA_Date>=:A";
    // get value and replace with 1234567890 as shown in process administrator
    Object[] subVars = { 1234567890 };
    VWRosterQuery rosterQuery = roster.createQuery(null, null, null,
    VWRoster.QUERY_MIN_VALUES_INCLUSIVE | VWRoster.QUERY_MAX_VALUES_INCLUSIVE, filter, subVars,
    VWFetchType.FETCH_TYPE_WORKOBJECT);
    int i = 0;
    // Iterate work items here...
    while (rosterQuery.hasNext() == true) {
        VWWorkObject workObject = (VWWorkObject) rosterQuery.next();
        try {
            i++;
            System.out.println(" Subject: " + workObject.getFieldValue("F_Subject") + " Count: " + i);
        } catch (Exception exception) {
            exception.printStackTrace();
            log.error(exception);
        }
    }
}

尝试并分享输出。

于 2019-11-07T01:32:56.307 回答