2 ビデオ再生アドレスの学習ページが
2.1 要求分析の
ユーザーは、対応するレッスンプランを再生しますビデオ教材レッスンプランをクリックして、オンライン学習のページを入力してください。
:ビジネスプロセスは、以下のようにしている
ビジネスプロセスの説明:
1は、ユーザーが、ページの表示回数(授業計画情報を含む)コース情報を取得するためにページ要求を検索し、オンライン学習のページを入力してください。
2 、ビデオ再生アドレスを取得するためにオンライン学習サービスリクエストを学びます。
3 、学習サービスは、現在のユーザーは、ユーザーにプロンプトを表示する権限がない場合学ぶために、研究へのアクセス権を持っているかどうかを確認してください。
図4は、コースの情報を取得するために、チェック、要求メディア情報検索サービスによってサービスを学びます。
5 、検索サービス要求ElasticSearchは、メディア情報のカリキュラム情報を取得します。
なぜ要求する必要がありElasticSearch 問い合わせメディア情報のカリキュラム情報を?
パフォーマンス上の理由から、コースの検索サービスから公開情報のお問い合わせについては。
情報は、メディア情報のカリキュラムに保存されている場合はElasticSearch で?
コース情報はもちろん、リリースの時にメディアの首都に格納されてelasticsearch 基本的なカリキュラムは、コース情報は変更されませんので公開し、。
2.2 コースの公開情報記憶媒体資産
2.2.1 需要の分析
メディア資産コース情報は、リリースの時間経過に保存されていますElasticSearchのインデックスデータベース、基本的なカリキュラムはもはや特定の修正ませんコースの情報を公開しているため、次のようにビジネスプロセスを。
次のようにビジネスプロセスは以下のとおりです。
1 、カリキュラムリリース、書き込みデータ、メディア情報、番組情報テーブルに。
1 )プログラムID の削除teachplanMediaPubのデータ
2 )コースのID クエリteachplanMediaのデータ
3 )にクエリteachplanMedia にデータ挿入teachplanMediaPub で
2 、Logstash メディア情報カリキュラムへのメディア情報の定期的なスキャンプログラム情報テーブル、およびインデックス情報ライブラリ。
2.2.2 データモデル
でxc_courseが所有しているメディアは、データベース内のテーブルを公開レッスンプランを作成します。
CREATE TABLE `teachplan_media_pub` (
`teachplan_id` varchar(32) NOT NULL COMMENT '课程计划id',
`media_id` varchar(32) NOT NULL COMMENT '媒资文件id',
`media_fileoriginalname` varchar(128) NOT NULL COMMENT '媒资文件的原始名称',
`media_url` varchar(256) NOT NULL COMMENT '媒资文件访问地址',
`courseid` varchar(32) NOT NULL COMMENT '课程Id',
`timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT
'logstash使用',
PRIMARY KEY (`teachplan_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
データモデルクラス次のとおりです。
@Data
@ToString
@Entity
@Table(name="teachplan_media_pub")
@GenericGenerator(name = "jpa‐assigned", strategy = "assigned")
public class TeachplanMediaPub implements Serializable {
private static final long serialVersionUID = ‐916357110051689485L;
@Id
@GeneratedValue(generator = "jpa‐assigned")
@Column(name="teachplan_id")
private String teachplanId;
@Column(name="media_id")
private String mediaId;
@Column(name="media_fileoriginalname")
private String mediaFileOriginalName;
@Column(name="media_url")
private String mediaUrl;
@Column(name="courseid")
private String courseId;
@Column(name="timestamp")
private Date timestamp;//时间戳
}
ダオは2.2.3
作成TeachplanMediaPub テーブルダオをし、TeachplanMediaPub 保存された情報を削除し、クラスの追加コース情報のメディア資本を使っので、ここでは、メディア資産情報のプロセスをカリキュラムに従って定義されるidはレッスンプランのメディア資産のメソッドを削除します。
public interface TeachplanMediaPubRepository extends JpaRepository<TeachplanMediaPub, String> {
//根据课程id删除课程计划媒资信息
long deleteByCourseId(String courseId);
}
//从TeachplanMedia查询课程计划媒资信息
public interface TeachplanMediaRepository extends JpaRepository<TeachplanMedia, String> {
List<TeachplanMedia> findByCourseId(String courseId);
}
2.2.4サービス
書き込みレッスンプランのメディアリソース情報には、メソッドを保存し、そしてこの方法は、時にコースのリリースと呼ばれています。
1 、メディア資本保全授業計画情報方法
この方法は、当然のメディア資本を削除するために情報を使用して、メディアの情報番組に情報を追加します。
//保存课程计划媒资信息
private void saveTeachplanMediaPub(String courseId){
//查询课程媒资信息
List<TeachplanMedia> teachplanMediaList = teachplanMediaRepository.findByCourseId(courseId);
//将课程计划媒资信息存储待索引表
teachplanMediaPubRepository.deleteByCourseId(courseId);
List<TeachplanMediaPub> teachplanMediaPubList = new ArrayList<>();
for(TeachplanMedia teachplanMedia:teachplanMediaList){
TeachplanMediaPub teachplanMediaPub =new TeachplanMediaPub();
BeanUtils.copyProperties(teachplanMedia,teachplanMediaPub);
teachplanMediaPubList.add(teachplanMediaPub);
}
teachplanMediaPubRepository.saveAll(teachplanMediaPubList);
}
2は、プログラムの公開時に、このメソッドが呼び出された
カリキュラムリリースのリビジョンサービスメソッドを:
....
//保存课程计划媒资信息到待索引表
saveTeachplanMediaPub(courseId);
//页面url
String pageUrl = cmsPostPageResult.getPageUrl();
return new CoursePublishResult(CommonCode.SUCCESS,pageUrl);
.....
3.2.5 テストでは、
テストコースのカリキュラムは、への情報記憶媒体の情報をリリースする予定の後に成功しteachplan_media_pub :、以下のようにテストプロセスである
1 、もちろん指定
2を、コースのカリキュラム計画にメディアアセットを追加し
3 、プログラムの実装がリリース
4をレッスンプランは、メディア資産を観察し、格納されている情報かどうかをteachplan_media_pub に
注:このテストは、メディア情報、公開授業計画情報の機能テストのためだけであるためには、することができますが、一時的にCMS 一時的に遮断機能をリリースしたページ、テスト効率の改善
率を。