@SuppressWarnings("unchecked") protected synchronized Client getWSClient(WorkItem workItem, String interfaceRef) { if (clients.containsKey(interfaceRef)) { return clients.get(interfaceRef); } String importLocation = (String) workItem.getParameter("Url"); String importNamespace = (String) workItem.getParameter("Namespace"); if (importLocation != null && importLocation.trim().length() > 0 && importNamespace != null && importNamespace.trim().length() > 0) { Client client = dcf.createClient( importLocation, new QName(importNamespace, interfaceRef), getInternalClassLoader(), null); clients.put(interfaceRef, client); return client; } long processInstanceId = ((WorkItemImpl) workItem).getProcessInstanceId(); WorkflowProcessImpl process = ((WorkflowProcessImpl) ksession.getProcessInstance(processInstanceId).getProcess()); List<Bpmn2Import> typedImports = (List<Bpmn2Import>) process.getMetaData("Bpmn2Imports"); if (typedImports != null) { Client client = null; for (Bpmn2Import importObj : typedImports) { if (WSDL_IMPORT_TYPE.equalsIgnoreCase(importObj.getType())) { try { client = dcf.createClient( importObj.getLocation(), new QName(importObj.getNamespace(), interfaceRef), getInternalClassLoader(), null); clients.put(interfaceRef, client); return client; } catch (Exception e) { logger.error("Error when creating WS Client", e); continue; } } } } return null; }
public Object start( final String uri, final String localName, final Attributes attrs, final ExtensibleXmlParser xmlPackageReader) throws SAXException { xmlPackageReader.startElementBuilder(localName, attrs); WorkflowProcessImpl process = (WorkflowProcessImpl) xmlPackageReader.getParent(); ActionNode actionNode = new ActionNode(); final String name = attrs.getValue("name"); emptyAttributeCheck(localName, "name", name, xmlPackageReader); actionNode.setName(name); final String id = attrs.getValue("id"); emptyAttributeCheck(localName, "id", name, xmlPackageReader); actionNode.setId(new Long(id)); process.addNode(actionNode); ((ProcessBuildData) xmlPackageReader.getData()).addNode(actionNode); return actionNode; }
@Test public void testSimpleReturnValueConstraintEvaluator() throws Exception { final InternalKnowledgePackage pkg = new KnowledgePackageImpl("pkg1"); ProcessDescr processDescr = new ProcessDescr(); processDescr.setClassName("Process1"); processDescr.setName("Process1"); WorkflowProcessImpl process = new WorkflowProcessImpl(); process.setName("Process1"); process.setPackageName("pkg1"); ReturnValueDescr descr = new ReturnValueDescr(); descr.setText("return value;"); KnowledgeBuilderImpl pkgBuilder = new KnowledgeBuilderImpl(pkg); DialectCompiletimeRegistry dialectRegistry = pkgBuilder.getPackageRegistry(pkg.getName()).getDialectCompiletimeRegistry(); JavaDialect javaDialect = (JavaDialect) dialectRegistry.getDialect("java"); ProcessBuildContext context = new ProcessBuildContext( pkgBuilder, pkg, process, processDescr, dialectRegistry, javaDialect); pkgBuilder.addPackageFromDrl(new StringReader("package pkg1;\nglobal Boolean value;")); ReturnValueConstraintEvaluator node = new ReturnValueConstraintEvaluator(); final JavaReturnValueEvaluatorBuilder builder = new JavaReturnValueEvaluatorBuilder(); builder.build(context, node, descr, null); ProcessDialectRegistry.getDialect(JavaDialect.ID).addProcess(context); javaDialect.compileAll(); assertEquals(0, javaDialect.getResults().size()); final KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase(); List<KnowledgePackage> packages = new ArrayList<KnowledgePackage>(); packages.add(pkgBuilder.getPackage()); kbase.addKnowledgePackages(packages); final StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession(); ksession.setGlobal("value", true); RuleFlowProcessInstance processInstance = new RuleFlowProcessInstance(); processInstance.setKnowledgeRuntime((InternalKnowledgeRuntime) ksession); SplitInstance splitInstance = new SplitInstance(); splitInstance.setProcessInstance(processInstance); assertTrue(node.evaluate(splitInstance, null, null)); ksession.setGlobal("value", false); assertFalse(node.evaluate(splitInstance, null, null)); }