🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

バッチファイル

バッチファイル(Batch File)は、Windowsのコマンドラインインタープリターによって複数のコマンドを実行させる事が出来るスクリプトファイルです。

Q&A

解決済

2回答

4671閲覧

バッチ処理の作成について

tk68716

総合スコア24

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

バッチファイル

バッチファイル(Batch File)は、Windowsのコマンドラインインタープリターによって複数のコマンドを実行させる事が出来るスクリプトファイルです。

0グッド

0クリップ

投稿2021/01/07 15:34

とてもざっくりとした質問ですみません。
ECサイトの作成をしているのですが、バッチ処理について全く分からないので教えてください。
配達日を指定して商品を購入すると、配達2日前にリマインドメールをお客様に送信するといったような処理があるとします。
そういう処理を実現するとしたらどのような手順を組めばよいでしょうか。

色々調べてみてこういう流れなのかなと推測でワークフローを箇条書きしてみました。
1.とある条件になるとバッチファイルを動かす処理をするファイルが実行される(言語はC#で書かれていました)
2.そのファイル内で購入商品やお客様の会員ランクによってリマインドメールの文面が変わる処理
3.リマインドメールを送るexeを実行?

皆様ならどのように実装されますか?何がわからないのかわからない状態です。
箇条書きで処理のながれを教えてもらえると嬉しいです

1.処理・・・
2.処理・・・

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

バッチファイルとバッチ処理を混同していませんか?
バッチ処理は、バッチファイル以外の処理でも使われる用語です。

仰るようなECサイトのリマインドメール送信なら、毎日の定時処理として実装されることが多いかと。
定時になったら、システム内で、翌々日が配達予定日になっている商品を抽出して、条件に応じたメールを送信するだけです。

投稿2021/01/07 23:38

YT0014

総合スコア1748

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tk68716

2021/01/07 23:48

ご回答ありがとうございます。 確かにバッチ処理とバッチファイル混同していた部分がありました。 ということは、 ①指定時間になったらリマインドメール発行のプログラムが呼ばれる ②その中で、会員ランク分けや文面を変える処理をする ③プログラムの終わりにリマインドメール発行batが呼ばれる といったような流れでしょうか?
YT0014

2021/01/08 04:14

それでも構いませんが、各メールの送信まで、1で呼ばれたプログラムで処理 する方が自然かと思います。 無理にbatファイルを使う必要もないですし。 バッチ処理より、定時実行とか、メール一斉送信とか、その辺りの情報を調べられたほうが有意義だと思います。
guest

0

ベストアンサー

例えば、

(1) 注文情報を SQL Server などの DB に保持しておく。具体例としては下の画像を見てください。Orders テーブルの他に Customers テーブルがあって、それには注文者のメールアドレスや「お客様の会員ランク」も保存されていると考えてください。

イメージ説明

(2) Windows Service のようなサービスを、上記 DB にアクセスできメールを送信できるサーバーに置く。

(3) そのサービスには、毎日、メールを送る時間になったら上記 DB にアクセスし、Orders テーブルから「配達2日前」のオーダー(上の画像で言うと RequiedDate の 2 日前)のレコードを抽出し、その中の CustomerID フィールドをもとに Customers テーブルから注文者のメールアドレスや「お客様の会員ランク」を調べて、「お客様の会員ランク」に応じた内容のメールを送る機能を実装する。

上記はあくまで例えばです。質問者さんの環境に適しているかは分かりません。他にもいろいろやり方はあると思います。

投稿2021/01/08 00:40

編集2021/01/08 00:52
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tk68716

2021/01/08 12:38

とても詳しい回答ありがとうございます。 イメージが沸きました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問