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