2017年3月4日土曜日

NoSuchMethodError: com.google.gwt.dev.resource.ResourceOracle.getResourceMap()Ljava/util/Map

現象:

NoSuchMethodError: com.google.gwt.dev.resource.ResourceOracle.getResourceMap()Ljava/util/Map

問題点:

CLASSPATH に異なるバージョンの jar を結合しています。

com/google/gwt/user/client/rpc/core/java/util/map_customfieldserializerbase.class
  C:\Users\Sola\.m2\repository\com\google\gwt\gwt-user\2.8.0\gwt-user-2.8.0.jar
  C:\Users\Sola\.m2\repository\com\google\gwt\gwt-servlet\2.3.0\gwt-servlet-2.3.0.jar

対策:

mvn gwt:compile
→ mvn org.codehaus.mojo:gwt-maven-plugin:2.3.0:compile

mvn gwt:compile は最新版(2.8.0)を取得しようとします。

バージョンを合わせましょう。バージョンが同じであれば、同じ class ファイルを含んでいたとしても、問題ないはずです。

2017年3月1日水曜日

jbpm-designer-standalone.war: WELD-001409: Ambiguous dependencies for type AuthenticationService with qualifiers @Default

現象:

自炊しました jbpm-designer-standalone.war がデプロイに失敗します。

{"WFLYCTL0080: Failed services" => {"jboss.deployment.unit.\"jbpm-designer-standalone.war\".WeldStartService" => "org.jboss.msc.service.StartException in service jboss.deployment.unit.\"jbpm-designer-standalone.war\".WeldStartService: Failed to start service
    Caused by: org.jboss.weld.exceptions.DeploymentException: WELD-001409: Ambiguous dependencies for type AuthenticationService with qualifiers @Default
  at injection point [BackedAnnotatedField] @Inject org.uberfire.ext.security.server.BasicAuthSecurityFilter.authenticationService
  at org.uberfire.ext.security.server.BasicAuthSecurityFilter.authenticationService(BasicAuthSecurityFilter.java:0)
  Possible dependencies: 
  - Managed Bean [class org.uberfire.ext.security.server.ServletSecurityAuthenticationService] with qualifiers [@Any @Default],
  - Managed Bean [class org.jboss.errai.security.server.PicketLinkAuthenticationService] with qualifiers [@Any @Default]
"}}

問題点:

不明

対策:

不明

jbpm-console.war.failed: "Services that were unable to start:" => ["jboss.deployment.unit.\"jbpm-console.war\".PARSE"],

問題点:

"{\"WFLYCTL0288: One or more services were unable to start due to one or more indirect dependencies not being available.\" => {
    \"Services that were unable to start:\" => [\"jboss.deployment.unit.\\\"jbpm-console.war\\\".PARSE\"],
    \"Services that may be the cause:\" => [
        \"jboss.http-upgrade-registry.default\",
        \"jboss.remoting.remotingConnectorInfoService.http-remoting-connector\"
    ]
}}"


対策:

Apache Tomcat などで http://localhost:8080 をふさいでいないかどうか、確認しましょう。

jbpm-designer-standalone: java.io.IOException: CreateProcess error=206, ファイル名または拡張子が長すぎます。

問題点:

C:\Git\jbpm-designer\jbpm-designer-standalone>mvn -Dfull -DskipTests -Dgwt.jjs.permutationWorkerFactory=com.google.gwt.dev.ThreadedPermutationWorkerFactory -DforkMode=never gwt:compile
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building jBPM Designer - Standalone 7.0.0.Beta6
[INFO] ------------------------------------------------------------------------
[WARNING] The POM for org.wildfly.core:wildfly-cli:jar:2.1.0.Final is invalid, transitive dependencies (if any) will not be available, enable debug logging for more details
[WARNING] The POM for org.wildfly.core:wildfly-embedded:jar:2.1.0.Final is invalid, transitive dependencies (if any) will not be available, enable debug logging for more details
[INFO]
[INFO] --- gwt-maven-plugin:2.8.0:compile (default-cli) @ jbpm-designer-standalone ---
[ERROR] 2 28, 2017 6:02:41 午後 java.util.prefs.WindowsPreferences <init>
[ERROR] 警告: Could not open/create prefs root node Software\JavaSoft\Prefs at root 0x80000002. Windows RegCreateKeyEx(...) returned error code 5.
[INFO] Compiling module org.jbpm.designer.jBPMDesigner
...
[INFO]    Compiling 2 permutations
[INFO]       [ERROR] Unable to start external process
[INFO] java.io.IOException: Cannot run program "C:\Java8\jre\bin\java": CreateProcess error=206, ファイル名または拡張子が長すぎます。
[INFO]  at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
[INFO]  at com.google.gwt.dev.ExternalPermutationWorkerFactory.launchExternalWorker(ExternalPermutationWorkerFactory.java:282)
[INFO]  at com.google.gwt.dev.ExternalPermutationWorkerFactory.getWorkers(ExternalPermutationWorkerFactory.java:374)
[INFO]  at com.google.gwt.dev.PermutationWorkerFactory.createWorkers(PermutationWorkerFactory.java:351)
[INFO]  at com.google.gwt.dev.PermutationWorkerFactory.compilePermutations(PermutationWorkerFactory.java:254)
[INFO]  at com.google.gwt.dev.CompilePerms.compile(CompilePerms.java:211)
[INFO]  at com.google.gwt.dev.Compiler.compile(Compiler.java:219)
[INFO]  at com.google.gwt.dev.Compiler.compile(Compiler.java:155)
[INFO]  at com.google.gwt.dev.Compiler.compile(Compiler.java:144)
[INFO]  at com.google.gwt.dev.Compiler$1.run(Compiler.java:118)
[INFO]  at com.google.gwt.dev.CompileTaskRunner.doRun(CompileTaskRunner.java:55)
[INFO]  at com.google.gwt.dev.CompileTaskRunner.runWithAppropriateLogger(CompileTaskRunner.java:50)
[INFO]  at com.google.gwt.dev.Compiler.main(Compiler.java:125)
[INFO] Caused by: java.io.IOException: CreateProcess error=206, ファイル名または拡張子が長すぎます。
[INFO]  at java.lang.ProcessImpl.create(Native Method)
[INFO]  at java.lang.ProcessImpl.<init>(ProcessImpl.java:386)
[INFO]  at java.lang.ProcessImpl.start(ProcessImpl.java:137)
[INFO]  at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
[INFO]  ... 12 more
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 03:34 min
[INFO] Finished at: 2017-02-28T18:05:22+09:00
[INFO] Final Memory: 142M/1528M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.codehaus.mojo:gwt-maven-plugin:2.8.0:compile (default-cli) on project jbpm-designer-standalone: Command failed with status 1 -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException


対策:

pom.xml<extraJvmArgs>-Dgwt.jjs.permutationWorkerFactory=com.google.gwt.dev.ThreadedPermutationWorkerFactory を追加します。

          <plugin><!-- Keep in sync with soa profile -->
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>gwt-maven-plugin</artifactId>
            <configuration>
              <!-- Build all GWT permutations and optimize them -->
              <module>org.jbpm.designer.jBPMDesigner</module>
              <draftCompile>false</draftCompile>
              <extraJvmArgs>-Xms1g -Xmx2g -Xss1M -Dgwt.jjs.permutationWorkerFactory=com.google.gwt.dev.ThreadedPermutationWorkerFactory</extraJvmArgs>
            </configuration>
          </plugin>



2017年2月28日火曜日

jbpm-designer-standalone: Could not reserve enough space for 2097152KB object heap

問題点:

mvn install が失敗します。

[INFO] --- gwt-maven-plugin:2.8.0:compile (gwt-compile) @ jbpm-designer-standalone ---
[INFO] Error occurred during initialization of VM
[INFO] Could not reserve enough space for 2097152KB object heap

INFO レベルになっていて一見何の問題もないように見えるのは、
もう一つ Java を起動していて、そこで実行しているタスクのログを INFO レベルで転送しているからです。

[ERROR] Failed to execute goal org.codehaus.mojo:gwt-maven-plugin:2.8.0:compile (gwt-compile) on project jbpm-designer-standalone: Command failed with status 1 -> [Help 1]

対策:

64-bit 版 jdk を使用しましょう。

jbpm-designer-standalone: de.is24.maven.enforcer.rules.IllegalTransitiveDependencyCheck failed

現象:


mvn package が失敗します。

エラー

[INFO] --- maven-enforcer-plugin:1.4.1:enforce (enforce-direct-dependencies) @ jbpm-designer-standalone ---
[INFO] Flag 'useClassesFromLastBuild' is set. Try to use existing output folder.
[INFO] Analyze dependencies of artifact 'org.jbpm:jbpm-designer-standalone:war:7.0.0.Beta6'.
[WARNING] Rule 0: de.is24.maven.enforcer.rules.IllegalTransitiveDependencyCheck failed with message:
Found 194 illegal transitive type dependencies in artifact 'org.jbpm:jbpm-designer-standalone:war:7.0.0.Beta6':
1.) org.drools.workbench.models.datamodel.auditlog.AuditLog
2.) org.drools.workbench.models.datamodel.auditlog.AuditLogEntry
3.) org.drools.workbench.models.datamodel.auditlog.AuditLogFilter

エラー

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-enforcer-plugin:1.4.1:enforce (enforce-direct-dependencies) on project jbpm-designer-standalone: Some Enforcer rules have failed. Look above for specific messages explaining why the rule failed. -> [Help 1]

問題点: 


そもそも何故このような現象が起こるかについてですが、jbpm-designer の親にあたる org.kie:kie-parent:7.0.0.Beta6 にチェックが仕込まれています。

C:\Git\jbpm-designer\pom.xml に次のような記述があります:

  <parent>
    <groupId>org.kie</groupId>
    <artifactId>kie-parent</artifactId>
    <version>7.0.0.Beta6</version>
    <!-- relativePath causes out-of-date problems on hudson slaves -->
    <!--<relativePath>../droolsjbpm-build-bootstrap/pom.xml</relativePath>-->
  </parent>
  <groupId>org.jbpm</groupId>
  <artifactId>jbpm-designer</artifactId>
  <packaging>pom</packaging>


org.kie:kie-parent:7.0.0.Beta6 を求めて…

わたしの場合は、こちらのファイルに: C:\Users\ku_000\.m2\repository\org\kie\kie-parent\7.0.0.Beta6\kie-parent-7.0.0.Beta6.pom

            <execution>
              <id>enforce-direct-dependencies</id>
              <goals>
                <goal>enforce</goal>
              </goals>
              <configuration>
                <rules>
                  <illegalTransitiveDependencyCheck
                      implementation="de.is24.maven.enforcer.rules.IllegalTransitiveDependencyCheck">
                    <regexIgnoredClasses combine.children="append">
                      <!-- The marshalling classes are generated by Errai during GWT compilation. These classes
                           usually contain references to other dependencies which are not part of the project
                           (transitive dependencies), which then results in the dependency check failure.
                           From the maintenance point of view, ignoring these generated classes seems like the
                           best option. -->
                      <regexIgnoredClass>org\.jboss\.errai\.marshalling\.server\.impl\.ServerMarshallingFactory.*
                      </regexIgnoredClass>
                    </regexIgnoredClasses>
                  </illegalTransitiveDependencyCheck>
                </rules>
              </configuration>
            </execution>

対策:

(1) スキップしたい


スキップすることができます。 mvn package -Denforcer.skip=true
参考

スキップできたとしても、デプロイが失敗します。本質的な対策にはなりえません。

2017-03-01 13:43:47,282 ERROR [org.jboss.as.controller.management-operation] (Controller Boot Thread) WFLYCTL0013: Operation ("deploy") failed - address: ([("deployment" => "jbpm-designer-standalone.war")]) - failure description: {"WFLYCTL0080: Failed services" => {"jboss.deployment.unit.\"jbpm-designer-standalone.war\".WeldStartService" => "org.jboss.msc.service.StartException in service jboss.deployment.unit.\"jbpm-designer-standalone.war\".WeldStartService: Failed to start service
    Caused by: org.jboss.weld.exceptions.DeploymentException: org/ext/uberfire/social/activities/model/SocialUser
    Caused by: java.lang.NoClassDefFoundError: org/ext/uberfire/social/activities/model/SocialUser
    Caused by: java.lang.ClassNotFoundException: org.ext.uberfire.social.activities.model.SocialUser from [Module \"deployment.jbpm-designer-standalone.war:main\" from Service Module Loader]"}}

(2) 対策したい

不足しているものを調査しないといけません。

mvn dependency:analyze -Denforcer.fail=false -DoutputXML=true

で、一覧化できます。<dependency> についてくる <version>...</version> は親プロジェクトの pom へ記述するようにし、末端プロジェクトの pom では削除するようにします。

<listMissingArtifacts>true</listMissingArtifacts> のほうを使います。記述方法については、オフィシャルを参照

こうすると mvn package で次のようにパッケージ情報つきで教えてくれます。


[INFO] --- maven-enforcer-plugin:1.4.1:enforce (enforce-direct-dependencies) @ jbpm-designer-client ---
[INFO] Flag 'listMissingArtifacts' is set. Transitively used artifacts are resolved.
[INFO] Flag 'useClassesFromLastBuild' is set. Try to use existing output folder.
[INFO] Analyze dependencies of artifact 'org.jbpm:jbpm-designer-client:jar:7.0.0.Beta6'.
[WARNING] Rule 0: de.is24.maven.enforcer.rules.IllegalTransitiveDependencyCheck failed with message:
Found 361 illegal transitive type dependencies in artifact 'org.jbpm:jbpm-designer-client:jar:7.0.0.Beta6':
1.) org.drools.workbench.models.datamodel.auditlog.AuditLog, [org.drools:drools-workbench-models-datamodel-api:jar:7.0.0.Beta6]
2.) org.drools.workbench.models.datamodel.auditlog.AuditLogEntry, [org.drools:drools-workbench-models-datamodel-api:jar:7.0.0.Beta6]
3.) org.drools.workbench.models.datamodel.auditlog.AuditLogFilter, [org.drools:drools-workbench-models-datamodel-api:jar:7.0.0.Beta6]

内容は itd-org.jbpm-jbpm-designer-client-jar-7.0.0.Beta6.txt にも保存されます。 



以下、手作業で抽出したもの:

C:\Git\jbpm-designer\jbpm-designer-standalone\pom.xml で、
<!-- dependencies added because of new illegal transitive dependency check --> のところに不足している dependency を追加していきます。

    <!-- New! 7.0.0.Beta6 -->
    <dependency>
      <groupId>org.drools</groupId>
      <artifactId>drools-workbench-models-datamodel-api</artifactId>
    </dependency>
    <dependency>
      <groupId>org.guvnor</groupId>
      <artifactId>guvnor-asset-mgmt-api</artifactId>
    </dependency>
    <dependency>
      <groupId>org.jboss.errai</groupId>
      <artifactId>errai-cdi-shared</artifactId>
    </dependency>
    <dependency>
      <groupId>org.jboss.errai</groupId>
      <artifactId>errai-marshalling</artifactId>
    </dependency>
    <dependency>
      <groupId>org.jbpm</groupId>
      <artifactId>jbpm-form-modeler-api</artifactId>
    </dependency>
    <dependency>
      <groupId>org.kie.workbench.screens</groupId>
      <artifactId>kie-wb-common-default-editor-api</artifactId>
    </dependency>
    <dependency>
      <groupId>org.kie.workbench.screens</groupId>
      <artifactId>kie-wb-common-project-editor-api</artifactId>
    </dependency>
    <dependency>
      <groupId>org.kie.workbench.services</groupId>
      <artifactId>kie-wb-common-datamodel-api</artifactId>
    </dependency>
    <dependency>
      <groupId>org.kie.workbench.services</groupId>
      <artifactId>kie-wb-common-refactoring-api</artifactId>
    </dependency>
    <dependency>
      <groupId>org.uberfire</groupId>
      <artifactId>uberfire-backend-api</artifactId>
    </dependency>
    <dependency>
      <groupId>org.uberfire</groupId>
      <artifactId>uberfire-commons-editor-api</artifactId>
    </dependency>
    <dependency>
      <groupId>org.uberfire</groupId>
      <artifactId>uberfire-widgets-properties-editor-api</artifactId>
    </dependency>
    <dependency>
      <groupId>org.uberfire</groupId>
      <artifactId>uberfire-security-management-api</artifactId>
    </dependency>


jbpm-console 自炊


64-bitjdk で。

これらを順にビルド:
https://github.com/droolsjbpm/jbpm-designer.git
https://github.com/droolsjbpm/jbpm-form-modeler.git
https://github.com/droolsjbpm/kie-wb-distributions.git


mvn package -Dfull -DskipTests -Denforcer.skip=true

jbpm-designer をフルビルドして作られる
C:\Git\jbpm-designer\jbpm-designer-standalone\target\jbpm-designer-standalone.war
が、
jbpm-console.war
の正体です。

2017年2月24日金曜日

BPMN2: conditionExpression に対応する language

Condition Expression Language

jbpm 7.0.0.Beta6



java
http://www.java.com/java

org.kie.api.runtime.process.ProcessContext context;
例: return "0".equals(context.getVariable("Decision"));
テンプレート
package myteam.test7;
import myteam.test7.*;
import org.drools.core.util.KieFunctions;
public class Process_myteam$u46$test7$u46$FormTest1631019649 {
    private static final long serialVersionUID = 510l;

public static Object returnValueEvaluator0(org.kie.api.runtime.process.ProcessContext kcontext    ) throws Exception {
    org.kie.api.runtime.process.ProcessContext context = kcontext;
    ** CONDITION HERE **
}


public static Object returnValueEvaluator1(org.kie.api.runtime.process.ProcessContext kcontext    ) throws Exception {
    org.kie.api.runtime.process.ProcessContext context = kcontext;
    return false;
}

}

javascript
http://www.javascript.com/javascript

使用方法不明

mvel
http://www.mvel.org/2.0

Wikipedia
例: context.getVariable('variable1') == '1'

drools
http://www.jboss.org/drools/rule

?
テンプレートコード
package myteam.test7
rule "RuleFlow-Split-test7.FormTest-2-3-DROOLS_DEFAULT"  @Propagation(EAGER) 
      ruleflow-group "DROOLS_SYSTEM" 
    when 
      ** CONDITION HERE **
    then 
end 


Activiti 5.x

ソースコードをチェックしましたところ、javax.script.ScriptEngine を使っている様子です。

juel

JUEL 2.2.1 の修正版を用いているようです。
出所
例: ${vacationApproved == 'true'}
例: ${vacationApproved == 'false'}

groovy

https://en.wikipedia.org/wiki/Groovy_(programming_language)
出所
例: if(throwException == 'true') { throw new java.lang.RuntimeException('Activiti Engine Rocks!'); }



tFormalExpression それ自体は余り関係ないようです…

2017年2月23日木曜日

jbpm-console wildfly-10.0.0.Final UTF-8 対応

WildFly の設定を変更します。

参考


http://127.0.0.1:9990/
Configuration
Subsystems
Web/HTTP - Undertow
Servjet/JSP
[View]
Attributes
Default encoding: UTF-8
Use listener encoding: true

admin で Claim しようとするとエラーになる。Organizational entity already exists

admin で Claim しようとするとエラーになる。

2017-02-23 15:15:19,268 ERROR [org.kie.server.remote.rest.jbpm.UserTaskResource] (default task-63) Unexpected error during processing Organizational entity already exists with [UserImpl:'admin'] id, please check that there is no group and user with same id: java.lang.RuntimeException: Organizational entity already exists with [UserImpl:'admin'] id, please check that there is no group and user with same id
 at org.jbpm.services.task.persistence.JPATaskPersistenceContext.persistOrgEntity(JPATaskPersistenceContext.java:240)
 at org.jbpm.services.task.commands.UserGroupCallbackTaskCommand.persistIfNotExists(UserGroupCallbackTaskCommand.java:143)


admin 以外のユーザーで Claim しましょう。

h2 ExampleDS と H2DS jbpmDS の保存先


---
jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE

こちらはファイルに保存されません…

---
jdbc:h2:tcp://localhost/~/jbpm-db;MVCC=TRUE

%USERPROFILE%\jbpm-db.h2.db

2017年2月22日水曜日

jbpm-console: 404 Not Found : WFLYDS0011: The deployment scanner found a directory named META-INF

現象:

404 - Not Found

ログ
C:\jbpm-installer\wildfly-10.0.0.Final\standalone\log\server.log

2017-02-22 09:45:11,915 ERROR [org.jboss.as.server.deployment.scanner] (DeploymentScanner-threads - 1) WFLYDS0011: The deployment scanner found a directory named META-INF that was not inside a directory whose name ends with .ear, .jar, .rar, .sar or .war. This is likely the result of unzipping an archive directly inside the C:\jbpm-installer\wildfly-10.0.0.Final\standalone\deployments directory, which is a user error. The META-INF directory will not be scanned for deployments, but it is possible that the scanner may find other files from the unzipped archive and attempt to deploy them, leading to errors.
2017-02-22 09:45:11,916 ERROR [org.jboss.as.server.deployment.scanner] (DeploymentScanner-threads - 1) WFLYDS0011: The deployment scanner found a directory named WEB-INF that was not inside a directory whose name ends with .ear, .jar, .rar, .sar or .war. This is likely the result of unzipping an archive directly inside the C:\jbpm-installer\wildfly-10.0.0.Final\standalone\deployments directory, which is a user error. The WEB-INF directory will not be scanned for deployments, but it is possible that the scanner may find other files from the unzipped archive and attempt to deploy them, leading to errors.


war を展開するとダメみたいです。参考: http://stackoverflow.com/a/11493190

そこで、(1) フォルダ名称に .war を付与する!

そして、jbpm-console.war.dodeploy を作成する!


いけましたけど、余りよろしくないんでしょうかね…

jbpm-console: 404 Not Found : Invalid value 0 for parameter level [90008-173]

現象:

http://127.0.0.1:8080/jbpm-console/

404 - Not Found


ログ
C:\jbpm-installer\wildfly-10.0.0.Final\standalone\deployments\jbpm-console.war.failed

{"WFLYCTL0080: Failed services" => {"jboss.persistenceunit.\"jbpm-console.war#org.jbpm.domain\"" => "org.jboss.msc.service.StartException in service jboss.persistenceunit.\"jbpm-console.war#org.jbpm.domain\": javax.persistence.PersistenceException: [PersistenceUnit: org.jbpm.domain] Unable to build Hibernate SessionFactory
    Caused by: javax.persistence.PersistenceException: [PersistenceUnit: org.jbpm.domain] Unable to build Hibernate SessionFactory
    Caused by: org.hibernate.exception.GenericJDBCException: Unable to obtain JDBC Connection
    Caused by: java.sql.SQLException: javax.resource.ResourceException: IJ000453: Unable to get managed connection for java:jboss/datasources/ExampleDS
    Caused by: javax.resource.ResourceException: IJ000453: Unable to get managed connection for java:jboss/datasources/ExampleDS
    Caused by: javax.resource.ResourceException: IJ031084: Unable to create connection
    Caused by: org.h2.jdbc.JdbcSQLException: パラメータ \"level\" に対する値 \"0\" が不正です
Invalid value \"0\" for parameter \"level\" [90008-173]"}}

level はtransaction-isolation で、 0 は TRANSACTION_NONE のようです。

設定ファイル
C:\jbpm-installer\wildfly-10.0.0.Final\standalone\configuration\standalone-full.xml

  <datasource jndi-name="java:jboss/datasources/ExampleDS" pool-name="ExampleDS" enabled="true" use-java-context="true">
      <connection-url>jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE</connection-url>
      <driver>h2</driver>
      <transaction-isolation>TRANSACTION_NONE</transaction-isolation>
      <security>
          <user-name>sa</user-name>
          <password>sa</password>
      </security>
  </datasource>


対策:

<transaction-isolation>TRANSACTION_NONE</transaction-isolation> を削除しましょう。

ant stop.jboss
standalone-full.xml を編集します。
ant start.jboss

2017年2月20日月曜日

jbpm-console: Build Failed, Process Compilation error Syntax error, insert "AssignmentOperator Expression"

問題点:

Build→Build & Deploy

---
Build Failed

Process Compilation error
Syntax error, insert "AssignmentOperator Expression" to complete Expression
Syntax error, insert ";" to complete Statement
The left-hand side of an assignment must be a variable
Syntax error, insert "AssignmentOperator Expression" to complete Expression
Syntax error, insert ";" to complete Statement
The left-hand side of an assignment must be a variable
---


対策:

scriptTask が生成するソースコードを確認できるようにしたい。

C:\jbpm-installer\build.xml を修正します。

  <!-- Start JBoss AS -->
  <target name="start.jboss">
    <property name="jboss.full.path.win" location="${jboss.home}/bin/standalone.bat" />
    <exec executable="${jboss.full.path.win}" spawn="yes" osfamily="windows">
      <env key="JAVA_OPTS" value="-XX:MaxPermSize=256m -Xms256m -Xmx1024m" />
      <arg value="-b" />
      <arg value="${jboss.bind.address}" />
      <arg value="--server-config=standalone-full.xml" />
      <arg value="-Dorg.kie.demo=true" />
      <arg value="-Dorg.kie.example=false" />
      <arg value="-Dorg.kie.server.id=default-kieserver" />
      <arg value="-Dorg.kie.server.persistence.ds=java:jboss/datasources/jbpmDS" />
      <arg value="-Dorg.kie.server.controller=http://localhost:8080/jbpm-console/rest/controller" />
      <arg value="-Dorg.kie.server.location=http://localhost:8080/kie-server/services/rest/server" />
      <arg value="-Ddrools.dump.dir=${jboss.home}/dumps" />
      <!--arg value="-Dorg.uberfire.nio.git.daemon.port=${org.uberfire.nio.git.daemon.port}" />
      <arg value="-Dorg.uberfire.nio.git.ssh.port=${org.uberfire.nio.git.ssh.port}" />
      <arg value="-Djboss.socket.binding.port-offset=${jboss.port.offset}" />
      <arg value="-Dorg.uberfire.nio.git.dir=${jboss.home}" />
      <arg value="-Dorg.uberfire.metadata.index.dir=${jboss.home}" /-->
    </exec>

<arg value="-Ddrools.dump.dir=${jboss.home}/dumps" /> を追加します。

C:\jbpm-installer\wildfly-10.0.0.Final\dumps フォルダーを作成(mkdir)します。


jbpm-console を再起動します。ant stop.jbossant start.jboss で。

Build→Build & Deploy で、同様のエラーが発生しますと、こちらにソースコードがダンプされます。


ソースコードを見ると、エラーの原因は一目瞭然です。




2017年2月17日金曜日

[ERROR] Unable to build KieBaseModel:kbase, Process Compilation error : Process org.jbpm

問題点:

[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building Test1 1.2
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- kie-maven-plugin:6.5.0.Final:build (default-cli) @ Test1 ---
[INFO] Adding KieModule from resource: FileResource[file=C:\Users\ku_000\git\jbpm-playground\Test1\src\main\resources]
[INFO] KieModule was added: FileKieModule[releaseId=kenjiuno.test1:Test1:1.2,file=C:\Users\ku_000\git\jbpm-playground\Test1\src\main\resources]
[ERROR] Unable to build KieBaseModel:kbase
Process Compilation error : Process org.jbpm.交通費の申請(Test1.Kotsu)
        org/jbpm/Process_org$u46$jbpm$u46$交通費の申請1538250979.java (9:387) : Syntax error, insert "AssignmentOperator Expression" to complete Expression
        org/jbpm/Process_org$u46$jbpm$u46$交通費の申請1538250979.java (9:387) : Syntax error, insert ";" to complete Statement
        org/jbpm/Process_org$u46$jbpm$u46$交通費の申請1538250979.java (9:387) : The left-hand side of an assignment must be a variable
        org/jbpm/Process_org$u46$jbpm$u46$交通費の申請1538250979.java (15:587) : Syntax error, insert "AssignmentOperator Expression" to complete Expression
        org/jbpm/Process_org$u46$jbpm$u46$交通費の申請1538250979.java (15:587) : Syntax error, insert ";" to complete Statement
        org/jbpm/Process_org$u46$jbpm$u46$交通費の申請1538250979.java (15:587) : The left-hand side of an assignment must be a variable

対策:

  • mvn -Ddrools.dump.dir=C:\Folder kie:build

参考

Process_org$u46$jbpm$u46$交通費の申請1538250979.java

package org.jbpm;
import org.jbpm.*;
import org.drools.core.util.KieFunctions;
public class Process_org$u46$jbpm$u46$交通費の申請1538250979 {
    private static final long serialVersionUID = 510l;

public static Object returnValueEvaluator0(org.kie.api.runtime.process.ProcessContext kcontext    ) throws Exception {
    org.kie.api.runtime.process.ProcessContext context = kcontext;
    true
}


public static Object returnValueEvaluator1(org.kie.api.runtime.process.ProcessContext kcontext    ) throws Exception {
    org.kie.api.runtime.process.ProcessContext context = kcontext;
    false
}

}

jbpm-console Eclipse: http://localhost:8080/jbpm-console/maven2/

http://localhost:8080/jbpm-console/maven2/ のベーシック認証を通します。

pom.xml の guvnor-m2-repo に認証情報を付けたい。

 <repositories>
  <repository>
   <id>guvnor-m2-repo</id>
   <name>Guvnor M2 Repo</name>
   <url>http://localhost:8080/jbpm-console/maven2/</url>
  </repository>
 </repositories>


C:\Users\ku_000\.m2\settings.xml というファイルを作成。中身はこんな感じです。詳細
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
                      https://maven.apache.org/xsd/settings-1.0.0.xsd">
  <localRepository/>
  <interactiveMode/>
  <usePluginRegistry/>
  <offline/>
  <pluginGroups/>
  <servers>
    <server>
      <id>guvnor-m2-repo</id>
      <username>builder</username>
      <password>builder</password>
    </server>
  </servers>
  <mirrors/>
  <proxies/>
  <profiles/>
  <activeProfiles/>
</settings>

builder はユーザーを作成するか、既存のものを指定してください。

それから Alt + F5 で Update Maven Project を実施します。

jbpm-console Eclipse: pom.xml template

サンプルです。
<?xml version="1.0" encoding="UTF-8"?>
<project
 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
 xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 <modelVersion>4.0.0</modelVersion>
 <groupId>___CHANGEHERE___</groupId>
 <artifactId>___CHANGEHERE___</artifactId>
 <version>___CHANGEHERE___</version>
 <packaging>kjar</packaging>
 <name>___CHANGEHERE___</name>
 <description>___CHANGEHERE___</description>
 <repositories>
  <repository>
   <id>guvnor-m2-repo</id>
   <name>Guvnor M2 Repo</name>
   <url>http://localhost:8080/jbpm-console/maven2/</url>
  </repository>
 </repositories>
 <build>
  <plugins>
   <plugin>
    <groupId>org.kie</groupId>
    <artifactId>kie-maven-plugin</artifactId>
    <version>6.5.0.Final</version>
    <extensions>true</extensions>
   </plugin>
   <plugin>
    <groupId>org.jbpm</groupId>
    <artifactId>jbpm-services-cdi</artifactId>
    <version>6.5.0.Final</version>
   </plugin>
  </plugins>
 </build>
 <properties>
  <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 </properties>
 <dependencies>
  <dependency>
   <groupId>javax.persistence</groupId>
   <artifactId>persistence-api</artifactId>
   <version>1.0</version>
  </dependency>
  <dependency>
   <groupId>org.kie</groupId>
   <artifactId>kie-api</artifactId>
   <version>6.5.0.Final</version>
  </dependency>
  <dependency>
   <groupId>org.jbpm</groupId>
   <artifactId>jbpm-services-cdi</artifactId>
   <version>6.5.0.Final</version>
  </dependency>
 </dependencies>
</project>

jbpm-console Eclipse: Plugin execution not covered by lifecycle configuration: org.kie:kie-maven-plugin:6.5.0.Final:build

現象:

jbpm-console Eclipse: Plugin execution not covered by lifecycle configuration: org.kie:kie-maven-plugin:6.5.0.Final:build (execution: default-build, phase: compile)


または、


maven-enforcer-plugin (goal "enforce") is ignored by m2e とか。

問題点:

"Plugin execution not covered by lifecycle configuration:"

私の理解で図解してみました。参照もとのページはこちら

こちらのページの情報によりますと
「“interesting” phases に連結している全 Maven plugins の処遇について明確な指示が必要」
→「つまり “interesting” phases に連結している全 Maven plugins を暗黙的にブロックする」とあります。
To solve these long-standing issues, M2Eclipse 1.0 requires explicit instructions what to do with all Maven plugins bound to “interesting” phases (see [M2E interesting lifecycle phases](M2E interesting lifecycle phases “wikilink”)) of a project build lifecycle. 
具体的に “interesting” phases の内訳ですが、こちらからは参照できなくなっています。
そこで、ソースコードを確認します。
  private static final String[] INTERESTING_PHASES = {"validate", //
      "initialize", //
      "generate-sources", //
      "process-sources", //
      "generate-resources", //
      "process-resources", //
      "compile", //
      "process-classes", //
      "generate-test-sources", //
      "process-test-sources", //
      "generate-test-resources", //
      "process-test-resources", //
      "test-compile", //
      "process-test-classes", //
compile フェイズは該当しますので、対策が必要です。実行する必要がなければ、そのままにします。

対策:

(1) そもそもなにをするプラグインなのかを調べます。ビルドには不要→無視。ビルドに必要なもの→自動実行 or 手動実行の判断

  • プラグインのホームページを検索して調べる。
  • ソースコードを調べる。「kie-maven-plugin github」などで検索

このプラグインのホームページはなさそうでしたので、github.com で kie-maven-plugin のソースコードを探してきて流し読みしました。

最後がつぎのようになっていました。
getLog().info("KieModule successfully built!");
jbpm-console はプロジェクトのデプロイ時にプロジェクトを maven ビルドします。

このプラグインは事前にそのビルドができるかどうかを開発環境で検証するためのプラグインであり、ビルド作業には直接関与しない、ということが読み取れました。

実行しなくても問題はないので、無視する(実行しない)こともできます。

(2) M2E Connector を入手する

Ctrl + 3 の Quick Access で m2e Marketplace を検索実行し Install m2e connectors で探します。


あればいいんですが、マイナーなものはないかもしれません。その場合は (3) を。

(3) pluginExecution を作成し、自動ビルドシステムの対象にします

しかるべき所に <execute></execute> を追加します。例:

 <build>
  <pluginManagement>
   <plugins>
    <!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.-->
    <plugin>
     <groupId>org.eclipse.m2e</groupId>
     <artifactId>lifecycle-mapping</artifactId>
     <version>1.0.0</version>
     <configuration>
      <lifecycleMappingMetadata>
       <pluginExecutions>
        <pluginExecution>
         <pluginExecutionFilter>
          <groupId>org.kie</groupId>
          <artifactId>
           kie-maven-plugin
          </artifactId>
          <versionRange>
           [6.5.0.Final,)
          </versionRange>
          <goals>
           <goal>build</goal>
          </goals>
         </pluginExecutionFilter>
         <action>
          <execute>
           <runOnIncremental>false</runOnIncremental>
           <runOnConfiguration>false</runOnConfiguration>
          </execute>
         </action>
        </pluginExecution>
       </pluginExecutions>
      </lifecycleMappingMetadata>
     </configuration>
    </plugin>
   </plugins>
  </pluginManagement>
 </build>

Alt + F5 で、Update Maven Project を実施します。

runOnIncremental と runOnConfiguration につきましてはだいたいご想像の通りと思います。

ソースコードより
  public boolean appliesToBuildKind(int kind) {
    if(PRECONFIGURE_BUILD == kind) {
      return runOnConfiguration;
    }
    if(INCREMENTAL_BUILD == kind || AUTO_BUILD == kind) {
      return runOnIncremental;
    }
    if(FULL_BUILD == kind || CLEAN_BUILD == kind) {
      return true;
    }
    return false;
  }
おそらく、./configure のような働きをするものは <runOnConfiguration>true</runOnConfiguration> を、

インクリメンタルビルドや自動ビルドに含めてよいものは <runOnIncremental>true</runOnIncremental> を指定するのだと思います。

(4) Eclipse の Run Configurations で実行したい

手動で実行するようにできます。おおよそ次のように設定します:


(5) コマンドラインから実行

mvn org.kie:kie-maven-plugin:6.5.0.Final:build
mvn org.kie:kie-maven-plugin:6.5.0.Final:build -DskipTests

など。

jbpm-console Eclipse: Project builder error: Unknown packaging: kjar

問題点:

Project build error: Unknown packaging: kjar


対策:

pom.xmljbpm-services-cdi を追加します。


<?xml version="1.0" encoding="UTF-8"?>
<project
 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
 xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 <build>
  <plugins>
   <!-- Add this plugin -->
   <plugin>
    <groupId>org.jbpm</groupId>
    <artifactId>jbpm-services-cdi</artifactId>
    <version>6.5.0.Final</version>
   </plugin>
  </plugins>
 </build>
 <dependencies>
  <!-- Add this dependency -->
  <dependency>
   <groupId>org.jbpm</groupId>
   <artifactId>jbpm-services-cdi</artifactId>
   <version>6.5.0.Final</version>
  </dependency>
 </dependencies>
</project>

それから、Alt + F5 で、Update Maven Project を実施します。

jbpm-console Clone Repository で、Can't clone repository: NoSuchElementException

問題点:

Can't clone repository: java.lang.RuntimeException: java.util.NoSuchElementException



対策:

C:\jbpm-installer\.niogit から該当レポジトリを一旦削除します。


jbpm-console を再起動します。ant stop.jbossant start.jboss で。


jbpm-console は git レポジトリもち?

Git レポジトリをホストしているようです! これで Eclipse との連携が楽にできます。


しかし git push ができません。

実体は C:\jbpm-installer\.niogit に見つけました。こちらを直接触るのか、git clone で他所とリンクするのか。

参考: 18.3. Synchronizing with Workbench Repositories


jbpm-console 404 - Not Found

jbpm-console が起動しなくなってしまった。


ExampleDS を disabled にしたのがよくなかったみたいです。jboss (wildfly) を再起動したら、機能停止に陥りました。

Management Interface (http://localhost:9990) から Deployments を眺めてもエラー。



有用なのは Internal Server Error という情報だけ・・・

server.log ログを観ましてもサッパリです。
2017-02-17 09:18:48,146 ERROR [org.jboss.as.controller.management-operation] (management task-4) WFLYCTL0013: Operation ("read-attribute") failed - address: ([
    ("deployment" => "kie-server.war"),
    ("subsystem" => "undertow"),
    ("servlet" => "org.kie.server.remote.rest.common.KieServerApplication")
]): java.lang.IllegalStateException
 at org.jboss.msc.value.InjectedValue.getValue(InjectedValue.java:47)
 at org.wildfly.extension.undertow.DeploymentServletDefinition$AbstractMetricsHandler.execute(DeploymentServletDefinition.java:126)
 

そういう場合は、C:\jbpm-installer\wildfly-10.0.0.Final\standalone\deployments フォルダーを見に行って、*.failed ファイルの中身を直接確かめます。


jbpm-console.war.failed の中身:
{"WFLYCTL0180: Services with missing/unavailable dependencies" => ["jboss.naming.context.java.module.jbpm-console.jbpm-console.DefaultDataSource is missing [jboss.naming.context.java.jboss.datasources.ExampleDS]"]}

解決の方途としましては、
standalone-*.xml
pool-name="ExampleDS" enabled="false" 
pool-name="ExampleDS" enabled="true" に変更するだけ
なんですが、50 個以上も該当するファイルがありました。どれを変えたら良いのやら。結局全部変えました。

jboss (wildfly) が稼働していると、変更したものが戻されてしまいます。
ant stop.jboss
standalone-*.xml を修正
ant start.jboss

でいきましょう。

問題を解決しましたら、*.failed を削除し、気を取り直りして http://localhost:8080/jbpm-console/ にアクセスします。


今度は *.isdeploying ができています。わかりやすい!


*.deployed になれば起動成功しています。

2017年2月16日木曜日

タスク名が指定されていません。User Task has no task name

こういう感じです。タスクフォームを生成・編集できません。



右側に隠れているプロパティーから、タスク名を設定するみたい。






org.hibernate.exception.GenericJDBCException: Unable to acquire JDBC Connection

jbpm-console 6.5.0 Final[Build & Deploy] にて発生したエラーですが、何のことなのか意味不明です。

かなり調べましたところ、

"Just want to make sure that the data source is defined as xa-datasource, I used the jboss management console to add them:"

ということらしいです。リンク



XA Datasoure をつくって Persistence descriptor から関連付けたら、ビルドは成功しました!

2017年2月15日水曜日

諸々のワークフローシステムのサービス一覧を調査

フレームワークとしてどのようなサービスを提供しているのか、お隣さんが気になる所です。
そこで手あたり次第調べてみようと。

Taverna Workbench Core 2.5.0 サービス一覧 リンク


Java Workflow Tooling project (JWT) 1.3.0 リンク


Activiti BPMN 2.0 designer リンク


BPEL Designer Project 1.0.5 リンク

?

jBPM Eclipse Plugin リンク

BPMN2 Modeler リンク  .bpmn2 (jBPM Process Diagram)



詳細は時間のある時にでも

2017年2月14日火曜日