0

jbossを使用せずにEclipseで簡単なワークフローの例をテストしました(もちろん、jbpm5をサポートするように構成jbpm5をEclipseに作成することによって)

そして今、サーバー jboss 5.1 で実行される JEE アプリケーション (Web アプリケーション) でサンプル ワークフローをテストしたいと考えています。

このファイルを作成します: Web アプリケーションのソース フォルダーの下に sample.bpmn を作成し、その下に ProcessMain.java を作成します。

src\com\sample

ProcessMain.java のソースコード

package com.sample;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.naming.Context;
import javax.naming.InitialContext;

import org.apache.commons.collections.map.HashedMap;
import org.drools.KnowledgeBase;
import org.drools.builder.KnowledgeBuilder;
import org.drools.builder.KnowledgeBuilderFactory;
import org.drools.builder.ResourceType;
import org.drools.io.ResourceFactory;
import org.drools.runtime.StatefulKnowledgeSession;

import com.esprit.ConsoftEJB.daos.RequestDaoRemote;
import com.esprit.ConsoftEJB.daos.UserDaoRemote;
import com.esprit.ConsoftEJB.persistence.Request;

/**
 * This is a sample file to launch a process.
 */
public class ProcessMain {

    private RequestDaoRemote  reqService ;

    private List<Request> requests=new ArrayList<Request>();
public ProcessMain() {
    // TODO Auto-generated constructor stub

}   

public List<Request> getAllRequest()
{
    try {
        Context context=new InitialContext();
        setReqService((RequestDaoRemote) context.lookup("erq"));

    } catch (Exception e) {
        e.printStackTrace();
    }
    return requests=reqService.lisAll();
}

    public static final void main(String[] args) throws Exception {

        validation();


    }

        public static void validation()
        {
            int state=0;
            KnowledgeBase kbase = null;
            try {
                kbase = readKnowledgeBase();
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
            // start a new process instance
            ProcessMain p=new ProcessMain();
            List<Request> listreq=  p.getAllRequest();
            for (int i = 0; i < listreq.size(); i++) {
                state=Integer.parseInt(listreq.get(i).getState());
            System.err.println(listreq.get(i).getState());  
            Map<String,Object> param=new HashMap<String,Object>();
            param.put("etat",state);

            ksession.startProcess("com.sample.bpmn.hello",param);


        }

            }

    private static KnowledgeBase readKnowledgeBase() throws Exception {
        KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
        kbuilder.add(ResourceFactory.newClassPathResource("sample.bpmn"), ResourceType.BPMN2);
        return kbuilder.newKnowledgeBase();
    }
    public RequestDaoRemote getReqService() {
        return reqService;
    }
    public void setReqService(RequestDaoRemote reqService) {
        this.reqService = reqService;
    }



    public List<Request> getRequests() {
        return requests;
    }



    public void setRequests(List<Request> requests) {
        this.requests = requests;
    }

}

このクラスをテストすると、コンソール モードで正しい結果が表示されます

(sample.bpmn ファイルに設定されています)

しかし、JavaクラスProcessMain.javaからのメソッド検証を使用するWebページ(jspページ)にボタンを作成したとき

このエラーが表示されます

java.lang.ClassNotFoundException: org.drools.builder.KnowledgeBuilderFactory from BaseClassLoader@2cfe4f04{VFSClassLoaderPolicy@6bf5a6af{name=vfsfile:/C:/serveur/jboss-5.1.0.GA/jboss-5.1.0.GA/server/default/deploy/ProjetVrai.war/ domain=ClassLoaderDomain@1cd0437b{name=vfsfile:/C:/serveur/jboss-5.1.0.GA/jboss-5.1.0.GA/server/default/deploy/ProjetVrai.war/ parentPolicy=AFTER_BUT_JAVA_BEFORE parent=ClassLoaderDomain@23b87cc4{DefaultDomain}} roots=[MemoryContextHandler@1284661896[path= context=vfsmemory://5hs4j5g-ahljra-h4wsmcy7-1-h4wsw19q-9y real=vfsmemory://5hs4j5g-ahljra-h4wsmcy7-1-h4wsw19q-9y], FileHandler@367317037[path=ProjetVrai.war/WEB-INF/classes context=file:/C:/serveur/jboss-5.1.0.GA/jboss-5.1.0.GA/server/default/deploy/ real=file:/C:/serveur/jboss-5.1.0.GA/jboss-5.1.0.GA/server/default/deploy/ProjetVrai.war/WEB-INF/classes/], DelegatingHandler@511899134[path=ProjetVrai.war/WEB-INF/lib/commons-beanutils.jar context=file:/C:/serveur/jboss-5.1.0.GA/jboss-5.1.0.GA/server/default/deploy/ real=file:/C:/serveur/jboss-5.1.0.GA/jboss-5.1.0.GA/server/default/deploy/ProjetVrai.war/WEB-INF/lib/commons-beanutils.jar], DelegatingHandler@669255256[path=ProjetVrai.war/WEB-INF/lib/commons-collections.jar context=file:/C:/serveur/jboss-5.1.0.GA/jboss-5.1.0.GA/server/default/deploy/ real=file:/C:/serveur/jboss-5.1.0.GA/jboss-5.1.0.GA/server/default/deploy/ProjetVrai.war/WEB-INF/lib/commons-collections.jar], 
4

1 に答える 1

0

したがって、EE環境には明らかにクラスがありません。戦争中にdrools-compiler- .jarとjbpm- flow.jarがあることを確認してください。使用しているJBPMのバージョンについても言及してください。

于 2013-03-09T14:16:34.890 に答える