eDocArrangementを使った自動処理では、そのほとんどがファイルを扱う処理となります。
フォルダを監視して、ファイルから情報を読み取り、XDW文書の加工を行い、処理済みフォルダに配信するという流れが基本なります。
そのような設定を行うのに、どのような情報が必要となるか考えてみてください。
設定を作成する際には、監視するフォルダのパスや、文書の移動先のフォルダパスとファイル名を入力する必要があります。それらが設定に記載されていないと、設計者に確認をすることになります。
その確認にかかる時間を想像してみてください。メールで確認する場合、どの処理のどういった条件で処理される仕様のことについて確認したいかを記載して、ファイル名をどのように変更するかを尋ねないといけません。
設計者もそのメールを読んで仕様を確認し、仕様書に追記を行い、メールの返信をしなければなりません。
そういったことを避けるためには、仕様書にたった一行、「ファイル名は[処理年月日(yyyymmdd) + ".xdw"]とする。」と書いてあれば、メールのやり取りをしないで済むのです。
仕様書には最低限、以下のような情報を記載する必要があります。
上記の情報に加えて、その仕様を決めた経緯や理由等を記載すると、より良くなります。
例えば、
のような情報が記載されていれば、設定を作成する人や、何年後かに引き継いだ担当者が、導入時の経緯を知ることができます。
そういった経緯を知れば、「導入前はとても大変な作業をしていたのだな。」と、「この仕組みを導入することで役に立てる」と思うこともあるでしょう。これも、たった一行記載するだけで、設定を作成する人や、後に引き継ぐ担当者のモチベーションを上げることができるのです。
eDocArrangementはフォルダ監視でファイルを処理する方式で、比較的簡単に自動化を行うことができます。
ここでは、サーバーに用意した共有フォルダに、XDW文書を格納すると、連番アノテーションを貼り付けて、処理済みフォルダに移動する仕組みを例にして、仕様書作成のポイントを説明していきます。
フォルダ構成は以下の様に作成します。
この例では、「10_受付」フォルダの担当毎のフォルダにファイルを格納すると、連番を文書に貼り付けて、「20_処理済」フォルダの担当毎のフォルダに移動するという処理を想定しています。
また、同時に「50_保管」フォルダに処理年、処理月のフォルダを自動作成し、コピーを格納します。
フォルダ名は、DocuWorks Deskで表示した際に、任意の順番になるようにしたいため、「10_受付」、「20_処理済」のように先頭に番号をつけます。
番号を「10」、「20」としているのは、後から(運用開始後など)「受付」と「処理済」の間にフォルダを挿入できるようにするためです。
例えば、後からエラーとなったファイルを格納するフォルダを追加したい場合、「15_エラー」とします。
監視フォルダは「10_受付」ですが、担当者毎にフォルダを分けたいとします。eDocArrangementのフォルダ監視は、下位のフォルダを監視する機能があるので、「10_受付」フォルダの下に担当者毎のフォルダを作っても、その中のファイルを処理できます。
仕様書には、「10_受付」の下に担当者毎のフォルダを作成することと、そこに格納する文書の名前は任意の名前とすることを記載して、例として、「\10_受付\伊藤」や、「文書1.xdw」のような例を記載すればよいです。仕様書記載例:
監視フォルダは「\10_受付」の中に担当者毎のフォルダを作成し、フォルダ配下を監視するようにします。
例えば、「\10_受付\伊藤」に「文書1.xdw」のようなファイルが入る想定です。
この例では、担当者毎のフォルダに入った文書を、「処理済み」フォルダの下の同じ担当者のフォルダに入れる必要があるので、入力文書のパスからフォルダ名を取得します。
また、処理日付をファイル名に付与したいので、システム日時から年月日(yyyymmdd)を取得します。
また、連番をアノテーションとして貼り付けたいので、連番管理ファイルから番号を取得し、貼り付け後に連番ファイルの番号をカウントアップします。
連番管理ファイルについては、下記「 関連ファイルの参照 」をご参照下さい。
仕様書には、入力のフォルダ名から担当者の名前を取得することと、日付をシステム日付から取得すること、連番をテキストファイルを使って管理・取得することを記載します。
仕様書記載例:
「入力フォルダ名から担当者名を取得します」
「連番を、テキストファイルで管理・取得します」
「日付(yyyymmdd)はシステム日付から取得します」
連番は、テキストファイルで管理します。番号をテキストファイルから読み込んで、アノテーションとして貼り付けたら、カウントアップして書き込みます。
仕様書には、連番はテキストファイルに保存して管理することを記載します。
仕様書記載例:
「連番はテキストファイルに保存して管理します」
連番をテキストアノテーションで貼り付けます。入力ファイルが複数ページある場合は、先頭ページだけなのか、全てのページに貼り付けるのかや、貼り付ける位置、フォントや大きさなどの情報が必要になります。サンプルファイルを用意して、実際に貼り付けた後のイメージを用意するとわかりやすいです。
前述した内容を記載しても良いですが、フォントの情報等も記載すると細かくなりすぎるので、サンプルファイルを用意して、仕様書には、貼り付けページや、大体の位置、文字のフォーマットなどを記載します。例えば、以下の様に記載します。
仕様書記載例:
「先頭ページの左上に、取得した連番をゼロ埋め4桁(0001)で文字色黒で貼り付けます」
貼り付ける連番の桁数を考える際に、以下のようなことを考えてみて下さい。
例えば、現在は、一日に100件程度の注文(ファイル)があり、稼働日20日間ではファイルは2000件程度。つまり、月毎にリセットするなら、4桁あれば良いと考えられます。
ただし、今後長いスパンで考えた場合、売り上げが増えれば、一日に500~1000件単位の注文が発生することもないとも言えない、そうすれば、一か月のファイル数は10000を超えることとなり、桁数は5桁必要となります。
このように、お客様の立場に立って先のことを考えれば、後々困ることのない設計ができます。
連番をファイル名に使用する場合、個々の連番は、ユニーク(唯一無二)なものが望ましいのですが、月毎・年毎などでリセットされる設定の場合、その月・年毎に同名のファイルができてしまいます。 また、リセットしない場合は、連番が長くなり、それも不便が生じる場合があります。
そのような問題は、例えば、ファイル名に日付情報を付加すると解決できます。
リセットのタイミングによって、「2019_06_0001」や「2019_0001」などとすれば、見やすく管理しやすい連番となります。
この例の様に、ひとつのファイルを2箇所に配信する場合は、コピーと移動を使います。
処理済みのファイルは、「20_処理済」のファイルに格納しますが、その際に、文書が格納されたフォルダより担当者の名前を取得し、その名前のフォルダを作成してからその中に格納します。
また、そのファイルのコピーを作成し、それを「50_保管」フォルダに、「処理年」「処理月」のフォルダを自動作成し、その中へ移動します。
仕様書には、処理済フォルダにコピーして、保管フォルダに移動すると記載します。
仕様書記載例:「処理済フォルダにコピーして、保管フォルダに移動します」
仕様書などに「〇〇年度」と書かれている場合、1月1日から12月31日までの1年間つまり暦年を指す「年」とは異なります。「年度」とは通常、暦年とは異なる区分で定めた期間のことを指します。一般的なのは「4月1日 ~ 翌年3月31日」です。
ですので、例えば、1月~12月までで処理済みのファイルを保存するフォルダ名には「〇〇年」と記載するのが正しい表記です。
もちろん、会計年度などのように、4月~翌年3月までを表す場合は、その限りではありません。
例えばファイルの移動先に「年、月のフォルダを作成します。」と書いてあったとして、その後に、
\50_保管\2019\06\20190615_0001.xdw 等と具体例を書くことにより、
\50_保管\201906\~ と区別でき誤解を防ぐことができます。
同じ「年、月のフォルダ」でも、前者は「年」のフォルダの中に「月」のフォルダがあるのに対して、後者は「年・月」合わせたフォルダ名となっています。
条件やパターンが複数ある場合は、考え得る全組み合わせを書いて下さい。
例として、「受付フォルダ」に「作業指示書_調達」「作業指示書_組み立て」「作業指示書_保管」の3つのファイルが入るとします。
ただし、いつもこの3つのファイル全てが揃うとは限りません。組み立てる必要がないものなら「調達」+「保管」、既に材料はあるものなら「組み立て」+「保管」などのように。
ですので、組み合わせとしては、<3つ揃った場合><2つずつの場合><1つずつの場合>と、組み合わせを表などにして、全て洗い出すことが重要です。また、それに加えて、<一つもない場合>などのイレギュラーなケースも想定しておくことも必要です(0件テスト)。
また、処理の流れを、各段階別に記すだけではなく、一連の処理の流れを、パターン別に全て挙げていただくとわかり易いです。
パターン1 | 調達・保管 |
---|---|
パターン2 | 調達・組立・保管 |
パターン3 | 組立・保管 |
「パターン1の場合は、〇〇の処理をします。」
「パターン2の場合は、△△の処理をします。」
「パターン3の場合は、~」
というように、パターン毎に説明を加えて下さい。
連番などの数字を扱う場合、フル桁を考慮した仕様や、番号がマイナスになる可能性がある場合は、それを考慮した仕様が必要です。
仕様書の作成では、以下のことに注意します。要件定義の「気をつけること」と重複する部分もありますが、仕様書はより細かく記載します。
要件定義や、システム設計の工程では、ユーザー様の業務で使用している用語や帳票の名前等を扱うことになります。
仕様書を基にプログラム設計を行うため、用語に表記揺れ等があると、関係者間での情報共有に支障がでます。
一つの物を表現する用語は必ずユニークになるように、定義、命名するようにすることが重要です。
例えば、ユーザー様で扱っている、ある帳票を「申請書」と呼んだり、「申請用紙」と呼んだりしていたとします。この2つの帳票は同じものなのか、それとも違うのかを明らかにして、同じものであれば、「申請書」のみを使うようにしていく提案をします。(少なくとも要件定義書、仕様書等では、「申請書」と表記するように統一します。)
別の例では、「見積もり番号」と「見積番号」のような表記ゆれがあると、自動処理の過程で、文書属性に見積番号を登録したい場合、どちらの表記で登録すればいいのか、曖昧になります。
これは当たり前のことかもしれませんが、作成する要件定義書や、仕様書、または関係者間でやりとりするメールの内容は、必ず見直しを行い、誤字脱字、表記揺れ等をなくすように心がけます。
システム開発で扱うドキュメントは、複数の人で共有して、意思疎通を行うための重要なものです。そのドキュメントに不備があると、仕様の再確認や、誤解、設定の作り直しや、修正等の様々な問題が発生することになります。
完璧でなくても、少し気を遣い、作成後にセルフチェックを行うだけでも、大きな効果が期待できます。
よく似た文章を複数書く場合に、一つ目に書いた文章をコピーして、違う部分のみを書き換えるような作り方をした場合、かなりの確率で書き換え忘れが起こりますので、ご注意ください。
よくある書き換え忘れの例:
コピー元
「先頭が「見積番号:」で始まるアノテーションを検索し、「見積番号:」の後ろの番号を取得後、ファイル名の先頭に番号を付与します。見積番号は数字のみです。」
コピー先
「先頭が「発注番号:」で始まるアノテーションを検索し、「発注番号:」の後ろの番号を取得後、ファイル名の先頭に番号を付与します。 見積番号 は数字のみです。」
上記の例の場合、コピー先の最後の「見積番号」を「発注番号」に書き換え忘れています。
このように複数箇所を書き換える場合は、アプリケーションの置換の機能を使うとミスを防ぐことができます。
また、同じ様な処理の仕様を記述する場合に、一つの処理内容をコピーして、その中の一部分のみを変更するだけの記述ですと、変更箇所を認識するのに時間がかかる場合があります。
その場合は、以下の様に記載すると良いです。
悪い例:
処理A「先頭が「見積番号:」で始まるアノテーションを検索し、「見積番号:」の後ろの番号を取得後、ファイル名の先頭に番号を付与します。見積番号は数字のみです。」
処理B「先頭が「発注番号:」で始まるアノテーションを検索し、「発注番号:」の後ろの番号を取得後、ファイル名の先頭に番号を付与します。発注番号は数字のみです。」
良い例:
処理A「先頭が「見積番号:」で始まるアノテーションを検索し、「見積番号:」の後ろの番号を取得後、ファイル名の先頭に番号を付与します。見積番号は数字のみです。」
処理B「処理内容は、処理Aの「見積番号」の記載を、「発注番号」に置き換えた内容となります。」
「同上。ただし、”○○”は”△△”とする。」などと書いて頂いても、わかり易いです。
前述の「コピペして一部を変更」とよく似ていますが、最初に作成した仕様書の一部が変更になった場合、仕様書内の全ての箇所を変更する必要がありますが、多くの場合で、変更忘れが発生します。
これもアプリケーションの検索や置換の機能を使って、変更するとミスが減ります。また、フォルダ構成などのキャプチャ画像では、フォルダの名前が変わった場合に、差し替える必要があります。
仕様書に必要なことは、「必要なことが漏れなく記載されていること」です。それに加え見栄えが良いとより良いですが、テキストだけのシンプルな仕様書でも、必要なことが漏れなく記載されていれば、それで良いのです。
例えば、上記の「 仕様書作成のポイント 」で挙げた例をテキストだけでまとめた仕様は、以下のようになります。
例)\10_受付\伊藤(担当者ごとのフォルダ)¥文書1.xdw
例)ファイル名:20190615_0001.xdw
例)\90_System\10_連番\受付番号.txt
この仕様はeDocArrangementでの実装方法なので、記載がなくても良いと思います。ですが、記載しておけば、連番はテキストで管理しているという仕様が読み取れるようになります。
例)\20_処理済み\伊藤\20190615_0001.xdw
例)\50_保管\2019¥06\20190615_0001.xdw
この仕様はeDocArrangementでの実装方法なので、記載がなくても良いと思います。ですが、記載しておけば、ログファイルがどの場所に保存されているか読み取れるようになります。