Activiti7 の正式リリース以降、SpringBoot2.x との統合開発を全面的にサポートしています。 Activiti7 と SpringBoot の統合開発のコーディネートをプロジェクトに導入することで、SpringBoot が Activti7 の統合をサポートできるようになります。 1. IDEAを使用してSpringBootプロジェクトを作成する プロジェクトのpom.xmlファイルに関連する依存関係を導入します。具体的な依存関係は次のとおりです。 <?xml バージョン="1.0" エンコーディング="UTF-8"?> <プロジェクト xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <モデルバージョン>4.0.0</モデルバージョン> <親> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <バージョン>2.2.1.RELEASE</バージョン> <relativePath/> <!-- リポジトリから親を検索 --> </親> <グループID>com.example</グループID> <artifactId>アクティビティ</artifactId> <バージョン>0.0.1-SNAPSHOT</バージョン> <name>アクティビティ</name> <description>Spring Boot のデモ プロジェクト</description> <プロパティ> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> </プロパティ> <依存関係> <依存関係> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </依存関係> <依存関係> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </依存関係> <依存関係> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>テスト</scope> </依存関係> <依存関係> <groupId>org.activiti</groupId> <artifactId>アクティビティ-スプリングブート-スターター</artifactId> <バージョン>7.0.0.Beta2</バージョン> </依存関係> <依存関係> <グループID>org.mybatis</グループID> <artifactId>マイバティス</artifactId> <バージョン>3.4.5</バージョン> </依存関係> <依存関係> <グループID>mysql</グループID> <artifactId>mysql-コネクタ-java</artifactId> <バージョン>5.1.27</バージョン> </依存関係> <依存関係> <groupId>org.projectlombok</groupId> <artifactId>ロンボク</artifactId> <オプション>true</オプション> </依存関係> </依存関係> <ビルド> <プラグイン> <プラグイン> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </プラグイン> </プラグイン> </ビルド> </プロジェクト> 2.application.ymlファイルの設定 Activiti7によって生成されたテーブルをMySQLデータベースに配置するには、設定ファイルapplication.ymlに関連する設定を追加する必要があります。 サーバ: ポート: 8085 春: 応用: 名前: spring-activiti データソース: URL: jdbc:mysql://localhost:3306/activiti?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT&nullCatalogMeansCurrent=true ユーザー名: root パスワード: 123456 ドライバークラス名: com.mysql.jdbc.Driver 活動: #1.flase: デフォルト値。 activiti が起動すると、データベース テーブルに保存されているバージョンが比較されます。テーブルが存在しないか、バージョンが一致しない場合は、例外 #2 がスローされます。true: activiti はデータベース内のすべてのテーブルを更新します。テーブルが存在しない場合は自動的に作成されます #3.create_drop: アクティビティの開始時にテーブルを作成し、シャットダウン時にテーブルを削除します (テーブルを削除するには、エンジンを手動でシャットダウンする必要があります) #4.drop-create: アクティビティの開始時に元の古いテーブルを削除し、新しいテーブルを作成します (エンジンを手動でシャットダウンする必要はありません) データベーススキーマ更新: true #履歴テーブルが存在するかどうかを確認します db-history-used: true #記録履歴レベル設定可能な履歴レベルは、なし、アクティビティ、監査、完全です 履歴レベル: フル #プロセス ファイルをチェックします。デフォルトでは、リソースの下のプロセス フォルダー内のプロセス ファイルをチェックします。check-process-definitions: false 3. SpringSecurityセキュリティフレームワーク統合構成を追加する Activiti7をSpringBootに統合すると、SpringSecurityセキュリティフレームワークがデフォルトで統合されるため、SpringSecurityによって統合された関連するユーザー権限構成情報を準備する必要があります。 1) SecurityUtilクラスを追加する SpringSecurity セキュリティ フレームワークをすばやく構成するために追加されたコンポーネント。 @成分 パブリッククラス SecurityUtil { プライベート Logger ロガー = LoggerFactory.getLogger(SecurityUtil.class); オートワイヤード @修飾子("myUserDetailsService") プライベート UserDetailsService userDetailsService; パブリック void logInAs(文字列ユーザー名) { ユーザーの詳細 user = userDetailsService.loadUserByUsername(ユーザー名); (ユーザー == null)の場合{ throw new IllegalStateException("ユーザー " + username + " は存在しません。有効なユーザーを指定してください"); } logger.info("> ログイン: " + ユーザー名); SecurityContextHolder.setContext(新しいSecurityContextImpl(新しい認証() { @オーバーライド パブリックコレクション<? extends GrantedAuthority> getAuthorities() { user.getAuthorities() を返します。 } @オーバーライド パブリックオブジェクト getCredentials() { user.getPassword() を返します。 } @オーバーライド パブリックオブジェクトgetDetails() { ユーザーを返します。 } @オーバーライド パブリックオブジェクト getPrincipal() { ユーザーを返します。 } @オーバーライド パブリックブール値isAuthenticated() { true を返します。 } @オーバーライド パブリック void setAuthenticated(boolean isAuthenticated) は IllegalArgumentException をスローします { } @オーバーライド パブリック文字列getName() { user.getUsername() を返します。 } })); org.activiti.engine.impl.identity.Authentication.setAuthenticatedUserId(ユーザー名); } } このクラスは、Activiti7 によって公式に提供されている例にあります。 2) DemoApplicationConfigクラスを追加する その役割は、SpringSecurityフレームワークのユーザー権限の構成を実装し、システムでユーザー権限情報を使用できるようにすることです。 @構成 パブリッククラスDemoApplicationConfiguration { プライベート Logger ロガー = LoggerFactory.getLogger(DemoApplicationConfiguration.class); @ビーン パブリックUserDetailsServicemyUserDetailsService() { InMemoryUserDetailsManager inMemoryUserDetailsManager = 新しい InMemoryUserDetailsManager(); 文字列[][] usersGroupsAndRoles = { {"salaboy", "パスワード", "ROLE_ACTIVITI_USER", "GROUP_activitiTeam"}, {"ryandawsonuk", "パスワード", "ROLE_ACTIVITI_USER", "GROUP_activitiTeam"}, {"erdemedeiros", "パスワード", "ROLE_ACTIVITI_USER", "GROUP_activitiTeam"}, {"その他", "パスワード", "ROLE_ACTIVITI_USER", "GROUP_otherTeam"}, {"システム", "パスワード", "ROLE_ACTIVITI_USER"}, {"管理者", "パスワード", "ROLE_ACTIVITI_ADMIN"}, }; (String[] ユーザー: ユーザーグループとロール) { リスト<文字列> authorizedStrings = Arrays.asList(Arrays.copyOfRange(user, 2, user.length)); logger.info("> 新しいユーザー「 + user[0] + "」を次のAuthorities[" + authorizedsStrings + "]"で登録しています); inMemoryUserDetailsManager.createUser(新しいUser(user[0], passwordEncoder().encode(user[1]), 権限Strings.stream().map(s -> new SimpleGrantedAuthority(s)).collect(Collectors.toList()))); } inMemoryUserDetailsManager を返します。 } @ビーン パブリックパスワードエンコーダパスワードエンコーダ(){ 新しい BCryptPasswordEncoder() を返します。 } } 4) テストクラスを作成する @SpringBootテスト 翻訳者 クラス ActivitiApplicationTests { オートワイヤード プライベート ProcessEngine processEngine; /** * プロセス定義の展開 */ @テスト パブリック void createDeploy() { リポジトリサービス リポジトリサービス = processEngine.getRepositoryService(); デプロイメント デプロイメント = repositoryService.createDeployment() .addClasspathResource("diagram/holiday.bpmn")//bpmn リソースを追加します。addClasspathResource("diagram/holiday.png") .name("休暇申請書プロセス") 。展開する(); log.info("プロセスデプロイメントID:" + deployment.getName()); log.info("プロセスデプロイメント名:" + deployment.getId()); } } 実行結果: 発生した問題: 1) 履歴テーブルはデフォルトでは生成されないため、application.yml で設定する必要があります。 春: 活動: #履歴テーブルが存在するかどうかを確認します db-history-used: true #記録履歴レベル設定可能な履歴レベルは、なし、アクティビティ、監査、完全です 履歴レベル: フル 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
>>: SQL における参照整合性の詳細な説明 (1 対 1、1 対多、多対多)
太陽系の 8 つの惑星(衛星を除く)のアニメーションを作成します。すべての惑星は太陽の周りを回ってい...
1. 目的Flask アプリケーションをローカルで作成し、Docker でパッケージ化し、独自のサー...
序文この記事は私自身の製作過程の簡単な記録です。練習中に質問があれば、一緒に話し合うことができます。...
実行環境、Idea2020バージョン、Tomcat10、実行時にTomcat CatalinaLog...
プロセス分析の実装(1)繰り返して電話をかけるには?答え: 関数をカプセル化して一度だけ呼び出すコー...
Vueでは、ローカルコンポーネントを自分で定義(登録)することができます。コンポーネント名を定義する...
MySQL のインストールについてはインターネット上に多くの記事がありますが、今日ノート PC にイ...
この記事の例では、記事の折りたたみと展開の機能を実現するためのjQueryの具体的なコードを参考まで...
1) キャッシュメカニズムの紹介Linux システムでは、ファイルシステムのパフォーマンスを向上させ...
データベース インデックスは、テーブル操作の速度を向上させることを目的としたデータ構造です。高速なラ...
docker-compose でコンテナ ポートを公開する方法は、ports と expose の ...
展示する デザインパスワード強度分析パスワードは数字、文字、特殊記号で構成されていますパスワード: ...
この記事では、検証コード干渉を実装するためのjsの具体的なコードを参考までに共有します。具体的な内容...
多くのプログラマーは MySQL に精通していると思います。多くの人が count の使い方と、最適...
毎日の統計情報を取得するプロジェクトを実行する際、プロジェクト ログを分析する必要があります。要件の...