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 で、同様のエラーが発生しますと、こちらにソースコードがダンプされます。


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