Bug 1199256

Summary: Switchyard rules component cannot build a decision table from CSV format on JBoss FUSE
Product: [Retired] JBoss BPMS Platform 6 Reporter: Mario Fusco <mfusco>
Component: jBPM CoreAssignee: Shelly McGowan <smcgowan>
Status: CLOSED EOL QA Contact: Tomas Sykora <tsykora>
Severity: high Docs Contact:
Priority: urgent    
Version: unspecifiedCC: aileenc, etirelli, lpetrovi, mbaluch, mfusco, mmelko, mwinkler, oskutka, rrajasek, smcgowan, tturek
Target Milestone: CR2   
Target Release: 6.1.0   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: 1195634 Environment:
Last Closed: 2020-03-27 20:08:01 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On: 1195634    
Bug Blocks:    
Attachments:
Description Flags
fuse-with-sy201er1-bpms610cr2.log none

Description Mario Fusco 2015-03-05 18:28:16 UTC
+++ This bug was initially created as a clone of Bug #1195634 +++

Description of problem:
There is a problem when I want create Switchyard rules component from Decision Table which is in CSV format. Builder thinks that file's format is XLS and try it parses. The consequence is thrown exception:

java.lang.IllegalArgumentException: Your InputStream was neither an OLE2 stream, nor an OOXML stream
  at org.apache.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:75)[368:org.apache.servicemix.bundles.poi:3.9.0.2]
  at org.drools.decisiontable.parser.xls.ExcelParser.parseFile(ExcelParser.java:82)[369:org.drools.decisiontables:6.1.0.20140801-1612]
  ...

Version-Release number of selected component (if applicable):
JBoss Fuse 6.1.0.redhat-379 + Switchyard 2.0.0.Aplha3 (community version)

How reproducible:
Attached maven project with a reproducer (100%).

Steps to Reproduce:
Build attached maven project by command: mvn clean install.
Deploy the reproducer on JBoss Fuse:
1. features:addurl mvn:com.example.switchyard/switchyard-dtables/0.0.1-SNAPSHOT/xml/features
2. features:install switchyard-dtables
3. log:display

Actual results:
Unable to start switchyard for bundle com.example.switchyard.switchyard-dtables. 
Full error log is enclosed.

Expected results:
Switchyard application is successfully deployed.

Additional info:
Expected problem is in function compileStream of class DecisionTableProviderImpl which passed parameter DecisionTableConfiguration configuration is null instead of a correct configuration with input type CSV.

--- Additional comment from Tomas Turek on 2015-02-24 03:35:14 EST ---



--- Additional comment from David Virgil on 2015-03-03 14:22:14 EST ---

I tested this example in the switchyard 2.0.1-ER1 version and it was working.

YOu can take a look to my comment, and to the code i used here:

https://issues.jboss.org/browse/SWITCHYARD-2583

--- Additional comment from Tomas Turek on 2015-03-04 07:27:24 EST ---



--- Additional comment from Tomas Turek on 2015-03-04 07:29:50 EST ---

I looked at it and I found that this problem exists also in SW 2.0.1-ER1. Example does not throw an error because it is waiting for the CSA component, which I forgot to add to features.xml. I modified the example to make it correctly working. See the attachments.

Steps to reproduce:
1. mvn clean install
2. Deploy in karaf:
	a. features:addurl mvn:com.example.switchyard/switchyard-dtables/0.0.1-SNAPSHOT/xml/features
	b. features:install switchyard-dtables
3. mvn exec:java

--- Additional comment from David Virgil on 2015-03-04 08:56:30 EST ---

I got it now. 

It seems that It is an error in drools. I am checking with one of the drools developers.

It is getting throw when it is called:


_runtimeEnvironment.addAsset(asset, type);

The asset is a Resource that points to the csv file and the type is DecisionTable.

--- Additional comment from Mario Fusco on 2015-03-04 10:41:33 EST ---

The problem is in how jbpm adds a csv resource to the drools knowldge builder.

I sent a pull request to the jbpm project that should fix this problem: https://github.com/droolsjbpm/jbpm/pull/238

Comment 2 Edson Tirelli 2015-03-05 18:33:11 UTC
This is a request from the Fuse team. Needs to be included in our GA release and so I am requesting the blocker flag.

Mario already provided a PR for fixing the code:

https://github.com/droolsjbpm/jbpm/pull/238

Comment 3 Marco Rietveld 2015-03-06 00:48:01 UTC
I'm not convinced the problem needs to be fixed on the jBPM/Drools side. 

Please see https://github.com/jboss-switchyard/components/pull/768

Comment 5 Marco Rietveld 2015-03-06 17:18:08 UTC
Fixed on master (waiting for blocker flag for 6.2.x). Commit: 

master: 
https://github.com/droolsjbpm/jbpm/commit/e890d200

Comment 6 Marco Rietveld 2015-03-10 08:47:34 UTC
Additional commit to catch another case: 

master: 
https://github.com/droolsjbpm/jbpm/commit/2bd321a7

Comment 7 Marco Rietveld 2015-03-10 12:47:27 UTC
Test fix: 

master: 
https://github.com/droolsjbpm/jbpm/commit/2d1f6f31

Comment 8 Marco Rietveld 2015-03-10 15:48:00 UTC
Cherry-picked to 6.2.x now that the blocker flag has been approved. Commits:

6.2.x: 
https://github.com/droolsjbpm/jbpm/commit/79f3b2f7
https://github.com/droolsjbpm/jbpm/commit/bbe57748
https://github.com/droolsjbpm/jbpm/commit/449f28d6

Comment 11 Jiri Svitak 2015-04-01 12:45:42 UTC
After discussion on IRC, this 'Singleton conflict' issue should be also fixed in jbpm source code here:
https://github.com/droolsjbpm/jbpm/blob/master/jbpm-human-task/jbpm-human-task-jpa/pom.xml#L65

Returning back.

Comment 12 Maciej Swiderski 2015-04-01 13:36:48 UTC
removed the OSGi manifest "singleton:=true" from jbpm-human-task-jpa module

jbpm
master:
https://github.com/droolsjbpm/jbpm/commit/eb2556c18b7f857e06603c4336990aa21a69be84

6.2.x:
https://github.com/droolsjbpm/jbpm/commit/32a7fe7181b70b59a1c0dbc62f6009a37e1bdcc0

Comment 13 David Virgil 2015-04-01 13:45:55 UTC
It seems that this is related drools artifacts that are not deployed.

Drools-integration-osgi is here:

https://github.com/dvirgiln/fuse-bxms-integ/karaf

This previous repository is where the switchyard bxms projects are gonna be placed. 

It contains integration tests for switchyard:

https://github.com/jboss-integration/fuse-bxms-integ/tree/master/karaf/tests/switchyard.

Also you can deploy the switchyard-dtables feature

https://github.com/jboss-integration/fuse-bxms-integ/blob/master/karaf/karaf-features/src/main/resources/features.xml#L292

The kie version that is used here is 6.2.0.Final

Thanks.

Any doubt contact me, or throw IRC (virchete)

Thanks
David

Comment 14 Jiri Svitak 2015-04-08 16:10:34 UTC
Ok, so I tried to verify again with BPM Suite 6.1.0.CR2.

I updated switchyard parent project to use BPMS 6.1.0.CR2 and rebuilt switchyard from tag 2.0.1-ER1. I set these versions:
parent/pom.xml:
jboss-integration-platform-bom version=6.0.0.CR26-redhat-2
kie-bom 6.2.0.Final-redhat-4
jbpm-bom 6.2.0.Final-redhat-4
drools-bom 6.2.0.Final-redhat-4
parent/bom/pom.xml:
kie-bom 6.2.0.Final-redhat-4
jbpm-bom 6.2.0.Final-redhat-4
drools-bom 6.2.0.Final-redhat-4
release/brms/jboss-as7/bundle/target/jboss-switchyard/jboss-as-7.4.0.Final-redhat-19/quickstarts/demos/helpdesk/pom.xml:
release/brms/jboss-as7/standalone/dist/target/jboss-switchyard/jboss-eap-6.3/quickstarts/demos/helpdesk/pom.xml:
quickstarts/demos/helpdesk/pom.xml:
<version.org.jbpm>6.2.0.Final-redhat-4</version.org.jbpm>

I rebuilt also switchyard-dtables-2.0.1-ER1 reproducer project.

I started jboss-fuse-6.2.0.redhat-064 and added necessary features:
JBossFuse:karaf@root> features:addurl mvn:org.switchyard.karaf/switchyard/2.0.1-ER1/xml/features
JBossFuse:karaf@root> features:addurl mvn:org.switchyard.brms.karaf/switchyard/2.0.1-ER1/xml/features
JBossFuse:karaf@root> features:addurl mvn:com.example.switchyard/switchyard-dtables/0.0.1-SNAPSHOT/xml/features


I tried to install switchyard-dtables project, but got:
JBossFuse:karaf@root> features:install switchyard-dtables
Error executing command: Could not start bundle mvn:org.jbpm/jbpm-flow-builder/6.2.0.Final-redhat-4 in feature(s) jbpm-6.2.0.Final-redhat-4: Activator start error in bundle org.jbpm.flow.builder [642].

And in the log I could see the old error before the fix:
java.lang.IllegalArgumentException: Your InputStream was neither an OLE2 stream, nor an OOXML stream
...
at org.jbpm.runtime.manager.impl.SimpleRuntimeEnvironment.addAsset(SimpleRuntimeEnvironment.java:109)[388:org.jbpm.runtime.manager:6.2.0.20141207-1019]

which is very odd. I have changed all version references to jbpm, drools and kie in the switchyard project and still some old version from December is picked up (org.jbpm.runtime.manager:6.2.0.20141207-1019).

David,
can you please comment on this?

Comment 15 Jiri Svitak 2015-04-08 16:23:56 UTC
Created attachment 1012296 [details]
fuse-with-sy201er1-bpms610cr2.log

fuse.log of jboss-fuse-6.2.0.redhat-064, switchyard 2.0.1.er1 built from tag and using bpms 6.1.0.cr2. The original problem is still there in the logs due to badly picked jbpm version:
org.jbpm.runtime.manager.impl.SimpleRuntimeEnvironment.addAsset(SimpleRuntimeEnvironment.java:109)[388:org.jbpm.runtime.manager:6.2.0.20141207-1019]
All jbpm, drools and kie versions were properly updated and string 6.2.0.20141207 could not be found in switchyard repos.

The console output currently looks like this (please regard the error message in previous comment as deprecated):

JBossFuse:karaf@root> features:install switchyard-dtables
Error executing command: Can not resolve feature:
Unsatisfied requirement(s):
---------------------------
   package:(&(package=org.eclipse.aether.artifact)(version>=1.0.0)(!(version>=2.0.0)))
      SwitchYard: Knowledge Common Component Library

Comment 16 Marek Baluch 2015-04-13 13:48:42 UTC
Jiri, based on comment #15 it looks like you will need to verify the issue when you get a new build with a new jBPM.

Comment 19 Martin BasovnĂ­k 2015-12-16 11:34:33 UTC
Verified.
https://bugzilla.redhat.com/show_bug.cgi?id=1195634#c9