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 対多、多対多)
序文フェイルオーバーが発生した後、よくある問題は同期エラーです。データベースが小さい場合は、ダンプし...
ウェブページとは何ですか? HTML ドキュメントがブラウザカーネルによってレンダリングされた後に表...
123WORDPRESS.COM HTML チュートリアル セクションに戻るには、ここをクリックして...
達成される効果多くの場合、入力ボックスの値の変化をリアルタイムで監視し、ブラウザを誘導してウェブサイ...
1. HTMLページの文字セットを指定する2つの方法方法1: <メタ文字セット="u...
コード <div class="test"> <div>...
Baota PanelのPHP7.3バージョンがZipArchiveをサポートしていないため、プログ...
目次1. MySQLデータのバックアップ1.1、データをバックアップするためのmysqldumpコマ...
protobufの簡単な紹介Protobuf は、Google のオープンソースのシリアル化プロトコ...
この記事では、アコーディオンを実装するためのjQueryの具体的なコードを参考までに紹介します。具体...
目次横棒グラフデータとスタイルを動的に更新するeChartsの幅と高さの適応の問題を解決する縦棒グラ...
まず、setIntervalはフックとしてカプセル化されます👇 'react' から...
Tomcat テストで 404 問題が発生します。問題は次のとおりです。 HTTP ステータス 40...
さっそく、レンダリングを見てみましょうソースコードは以下のとおりです <!DOCTYPE ht...
<br />かつて、仏印と東坡氏が仏教について雑談していたとき、東坡氏が突然こう言った。...