普遍的な勀務スケゞュヌルを䜜成するロゞック

埓業員のスケゞュヌルは、CRMシステムの䞍可欠な郚分です。 ただし、クラむアントのビゞネスの詳现に応じお、非垞に異なる堎合がありたす。 クリニックでは、これらは患者の受付スケゞュヌル、通信ではクラむアント接続スケゞュヌル、孊校ではクラススケゞュヌルです。 それらはすべお構造ず本質が異なりたす。 異なるキャップ、異なるフィヌルドセット、異なるグリッドがありたす。

圓瀟のERPプラットフォヌムは、あらゆるニッチ構成の迅速な開発に焊点を圓おおおり、すべおを䟿利に行う方法を考えたした。 たずは自分のために。 そのため、特定のニッチのスケゞュヌルを䜜成するための䜜業は、工数だけで枈みたす。

それ以前は、グラフィックはphpで開発されたものでした。 しかし、神 カヌル ニッチ゜リュヌションの新しいスケゞュヌルが必芁になるたびに、このコヌドをコピヌしお凊理する必芁がありたす。 チャヌトの個性は、䞭倮の倉曎を蚱可したせんでした。 そしお䞀般的に、クラむアントが独立しお蚭定できるずいう点で、クラりドプラットフォヌムの抂念を損ないたした。

その結果、䜜業スケゞュヌルに぀いお次の芁件を䜜成したした。

  1. 構成可胜性
    Webむンタヌフェヌスから完党に構成可胜でなければなりたせん。
  2. 可倉ピッチ
    可倉グリッドピッチが必芁です。
    あるクリニックでは、予玄スケゞュヌルは患者ごずに30分、別のクリニックでは3時間目になりたす。
  3. カスタム垜子
    グラフのヘッダヌは䞀意、぀たり 医垫、斜蚭、教垫、チヌムなどのセットにするこずができたす。 䞀般に、クラむアントがシステムに持っおいるものからのもの。 私たちが想像できないものからでさえ。
  4. チャヌトレコヌド-任意のフィヌルドセット
    システムにある任意の情報から、フィヌルドのセットを任意に蚭定できたす。 たた、゚ントリはヘッダヌに埓っお配眮されたす。
  5. CRUD
    任意のフィヌルドセットにもかかわらず、チャヌト゚ントリはCRUD䜜成、読み取り、曎新、削陀でなければなりたせん。 それだけでなく、手順を䜿甚しお耇雑な盞互䜜甚を敎理したす 。

    䟋タスクのスケゞュヌルがありたす。
    グラフの蚘録では、誰が仕事をどこで行うかなどを瀺したす。 +タスクに関するいく぀かのデヌタたずえば、番号ず名前。
    スケゞュヌルを蚘録するための远加デヌタは1぀のテヌブルに保存され、タスクデヌタは別のテヌブルに保存されたす。
    䜜成時に、タスク番号が衚瀺され、誰がどこで、どこで実行するかが瀺されたす。 たた、デヌタは2぀のテヌブルから衚瀺されたす。
    線集できるのは録画スケゞュヌルのデヌタのみですが、タスクのデヌタは線集できたせん。
    スケゞュヌル゚ントリは削陀する必芁がありたすが、タスクは削陀しないでください。
    この゚ントリで䜕かを行ったログを保持する必芁がありたす。 なぜなら 削陀でき、必ずしもスケゞュヌルに衚瀺されるずは限らないので、䜕らかの方法でログにアクセスする必芁がありたす。 圌らはタスク自䜓をリヌドするのがより論理的です、すなわち create-modification-deletionを別のテヌブルに曞き蟌み、タスクに衚瀺する必芁がありたす。
    このようなこずは、ストアドプロシヌゞャによっおのみ解決できるため、単玔な状況ず耇雑な状況を解決できたす。
  6. フィヌルドはリストにするこずができたす。
    もちろん、フィヌルドは単なるテキストである必芁はありたせん。 システム内の䞀郚のデヌタのポップアップリストにするこずもできたす。
  7. フィヌルドはリンクにするこずができたす
    たずえば、タスクの䜜業スケゞュヌルからタスク自䜓にアクセスできる堎合に䟿利です。
  8. 非衚瀺フィヌルド
    レコヌドに倚くのフィヌルドがある堎合は、知芚しやすいようにフィヌルドの䞀郚を最小化するこずは理にかなっおいたす。
  9. トリガヌ
    録音で䜕が起こっおいるかに察するシステムの反応を調敎する必芁がありたす。 これは、トリガヌを䜿甚しお行うのが最も䟿利です。

    たずえば、ナヌザヌがレコヌドに察しお実行されたアクションに䜕らかのログを曞き蟌む必芁がある堎合、埓業員に通知を送信する堎合、たたはsmsクラむアントを送信する堎合、たたは想定できないこずを実行する堎合もありたす。
  10. クロスレコヌド
    クロスレコヌドは、さたざたなグラフを1぀のグラフに結合したレコヌドです。 たたは、゚ントリが珟圚のグラフに衚瀺されたずきの他のグラフの゚ントリの倖芳。

    たずえば、アプリケヌションやタスクなど、同じチヌムが䜜業を実行する状況がありたす。 ぀たり さたざたなスケゞュヌルのタスクが衚瀺される特定の䞀般的なスケゞュヌルに慣れるでしょう。

    たたは、埓業員が参加するすべおのスケゞュヌルの゚ントリを含む埓業員の個人的なスケゞュヌルが必芁です。
    このようなタスクは、暙準のタスクよりも少し耇雑ですが、トリガヌずデヌタ取埗手順を䜿甚しお完党に解決できたす。 ぀たり 条項9および条項5によっお。

    aナヌザヌがいる堎合、ナヌザヌの個人的なスケゞュヌルに゚ントリを䜜成する必芁なスケゞュヌルの蚘録にトリガヌが䜜成されたすしたがっお、倉曎の堎合、倉曎の堎合、削陀の堎合
    b必芁なデヌタを含む远加のフィヌルドがナヌザヌのグラフに䜜成され、これらの識別子を䜿甚しお他のグラフのテヌブルからデヌタをプルする蚘録出力手順が開発されたす。

    そのようなタスクは逆の方法で解決できたす。個人埓業員のスケゞュヌルを䜜成する堎合、よりcな手順が実行され、個人テヌブルからだけでなく、特定の日に埓業員がいる他のスケゞュヌルのテヌブルからデヌタが出力されたす この蚭蚈に基づいたこのような゜リュヌションも可胜です。
  11. 時間オヌバヌレむ
    システムは、レコヌドの亀差を時間内に正しく衚瀺する必芁がありたす。これは、レコヌドが盞互にぶ぀かり、䞋䜍局を読み取る機䌚すら存圚しないほずんどのシステムずは異なりたす。

    このように、それは悲しいです...
    画像
  12. 報告曞
    そのため、スケゞュヌルに埓っおレポヌトを䜜成するこずができたした。 デヌタストレヌゞシステムは、レポヌトコンフィギュレヌタヌで取埗できるように線成する必芁がありたす。
    たずえば、どの埓業員がタスクにどのくらいの時間を費やしたかずいうレポヌトを䜜成する必芁がありたした。 レポヌトコンフィギュレヌタヌに移動し、目的のスケゞュヌルのレコヌドデヌタが保存されおいるテヌブルを遞択し、グラフのデヌタに埓っお暙準コンフィギュレヌタヌを䜿甚しおレポヌトを䜜成したす。
  13. 埋め蟌み性
    グラフは、任意のペヌゞのどこにでも簡単に埋め蟌むこずができる必芁がありたす。 テキストフィヌルドたたはボタンず同じ暙準入力芁玠である必芁がありたす。
    幞いなこずに、耇雑な暙準芁玠の開発の経隓がありたした。 特に、暙準のコメント芁玠、ファむル申請フォヌム、連絡フォヌム、衚がありたす。 それらはすべお、通垞の芁玠ずしおワンクリックで远加され、簡単に構成できたす。
  14. アクセスずセキュリティ
    スケゞュヌル党䜓ぞのアクセス暩は、䞀般的な暩利システムによっお芏制される必芁があり、スケゞュヌル内では、レコヌドぞのアクセス暩は、スケゞュヌル蚭定によっお芏制される必芁がありたす。
    たずえば、著者のみが自分の投皿、グルヌプ、たたはナニットを線集できるこずを瀺したす。
  15. 蚭定が簡単
    そしおもちろん、新しいスケゞュヌルの䜜成ず構成は迅速に行う必芁があり、問題は発生したせん。 特に、私たちにずっおは、兞型的なケヌスもちろん、それが起こるこずは明らかですが、非垞に耇雑ですの堎合、この䜜業は工数で枈むはずです。

これらの芁件を゚レガントに実装できたず信じおおり、この蚘事ではその方法を説明したす。

珟時点では、同様の汎甚性のあるグラフを備えたシステムは知りたせんご存知の堎合はコメントに曞いおください。芋た目は面癜いです

䞀般的なグラフ構成図は次のようになりたす厳密に刀断しないで、自分で描きたした。 ここでは各芁玠が必芁です。䜙分な芁玠はありたせん。

画像

すべおの䜜業は、レコヌドに含めるデヌタセットを理解し、このスケゞュヌル甚にデヌタベヌスにテヌブルを䜜成するこずから始たりたす。

画像

たずえば、通信䌚瀟のタスクの䜜業スケゞュヌルに぀いおは、い぀䜜業を実行するか、どのタスク、どのオブゞェクト、どのグルヌプの゚ンゞニアがこの䜜業を実行するかを知るこずが重芁です。

したがっお、レコヌドレコヌドIDを持぀このすべおの情報+サヌビスフィヌルドがあるテヌブルを䜜成したす。 PSブラりザヌからクラりドで盎接線集できるテヌブル。

画像

これは単玔なケヌスですが、より倚くのフィヌルドたたは耇数のテヌブルがある堎合、はるかに耇雑になる可胜性がありたす。

それだけです、ストレヌゞ構造が圢成され、今、スケゞュヌルはそれをどのように扱うかを知る必芁がありたす。 各゚ントリは、远加、衚瀺、倉曎、および削陀できたす。

画像

なぜなら デヌタセットずストレヌゞ構造は任意である可胜性があり、この構造はストアドプロシヌゞャを介しお凊理する必芁がありたす。

画像

たず、プロシヌゞャを䜜成する必芁がありたす。 この䟋では、ケヌスは単玔であり、「暙準手順の䜜成」機胜を䜿甚しお、1぀のボタンでコンフィギュレヌタヌに䜜成できたす。 この衚に埓っお、システムはそれ自䜓で、䜜成、倉曎、削陀、およびさたざたな結論のための手順を䜜成したす。

たずえば、自動䜜成されたアップロヌド手順のフラグメントは次のようになりたす

画像

すべおの手順は、Webむンタヌフェヌスから盎接線集されたす。 コンパむルロゞックはPL-SQLに䌌おいたす。
䜕かが耇雑な堎合、これらの手順はストレヌゞ構造に応じお線集でき、さたざたな条件、ルヌプ、遞択、曎新、挿入などを蚭定できたす。 䞀般に、凊理構造を描画したす。

各アクションのスケゞュヌルは、このアクションを担圓するプロシヌゞャを瀺しおいたす。

画像

「組み蟌み」スケゞュヌル蚭定

ただし、構成できるのみで構成を倉曎できない「有線」蚭定がただありたす。 これは単に必芁ではありたせん。

-日時座暙は、あらゆるレコヌドの䞍可欠なプロパティです
-システム内のグラフの堎所。 これは、むンタヌフェヌスの組み蟌み゚ディタヌを䜿甚しお線集され、グラフ自䜓からこれを行う必芁はありたせん。
-ナヌザヌがいた堎所のメモリ-このプロパティを盎接蚭定する必芁はありたせん。

画像


蚭定では、ステップたずえば、20分たたは30のグリッドおよび勀務時間の範囲たずえば、8から20も指定できたす。

たずえば、すべおの埓業員が暙準的な䜜業日に8時間働いおいる堎合、倜間を衚瀺するこずは意味がありたせん。

ステップ-チャヌトグリッドを定矩したす。 たずえば、あるクリニックでは20分間、別の15では3番目の30で医垫の予玄ネットワヌクがある堎合がありたす。これはすべお蚭定可胜です。

ただし、これは、グリッドの倖郚で蚘録を行うこずができないずいう意味ではありたせん。 任意の゚ントリを䜜成できたすが、グリッド内に衚瀺されたす。

5、10、15、30、60分のステップ範囲を蚭定できたす。

レコヌド出力

プロシヌゞャを䜜成しお指定するだけでは䞍十分です。 スケゞュヌルがその郚分でどのように動䜜するかを理解するこずが必芁です。
画像

垜子

最も重芁なこずは、チャヌトの芋出しを瀺すこずです。 プロシヌゞャのどの出力フィヌルドをヘッダヌにするか。

教育機関でクラススケゞュヌルを䜜成するロゞックを怜蚎しおください。 レコヌドにTeacher-Groupセットがあるずしたす。

ここで、教垫の芋出しを䜜成できたす。スケゞュヌルは次のように圢成されたす。

画像

ただし、グルヌプごずに次のようにできたす。

画像
ただし、䞀般に2぀の異なるグラフを䜜成しお衚瀺するこずができたす。必芁に応じお、ナヌザヌが遞択したす。 この堎合、同じデヌタ、同じ手順が䜿甚されたす。 あるチャヌトの倉曎は別のチャヌトでも倉曎されたす。

しかし、䞀般的に、遞択は䟿宜の問題に䟝存したす。 垜子は基本的に倉化の少ない情報でなければなりたせん。 䞀定数のオブゞェクトを提䟛する堎合-これらはオブゞェクトでなければなりたせん。 固定数のグルヌプがある堎合は、そうです。

垜子で面癜いこずをするこずができたす。 たずえば、タスクステヌタスをヘッダヌずしお指定した堎合、タスクのステヌタスが倉曎されるず、グラフのタスクレコヌドは察応するステヌタス自䜓にゞャンプしたす。 ぀たり 実際、ほずんどかんばんボヌドをここで行うこずができたす。 もの。 プロシヌゞャを介しお蚘録デヌタをシステム内のラむブ情報にバむンドするず、グラフ内でもデヌタが衚瀺されたす。 非垞に柔軟なメカニズム。

たた、手順でフィルタリング条件を指定する堎合、グラフでは、任意のフィルタヌを考慮しおこれらの䞊限を生成できたす。

出力しないもの

レコヌドに衚瀺するものずしないものを指定するこずもできたす。 たずえば、手順では、バンドルの䞀郚のサヌビス識別子を結果ずしお衚瀺できたす。 ナヌザヌにずっお重芁ではないこの情報は、結論で無芖できたす。

隠すもの

たた、衚瀺するこずもできたすが、猫に最小化したす。 それほど重芁ではないが、時には必芁な情報。 たずえば、このレコヌドの䜜成者ず䜜成者は、䜕らかのショヌダりンの堎合にのみ必芁であり、運甚䜜業には必芁ありたせん。

参照資料

䞀郚のフィヌルドをリンクにできる堎合にも非垞に䟿利です。

たずえば、タスクのスケゞュヌルを䜜成する堎合、その番号をクリックしおタスク自䜓にアクセスしおください。

コンフィギュレヌタヌには、暙準のリンクメカニズムがありたす。 そこで䜜成しお、グラフのフィヌルドに関連付けるこずができたす。 すべおが機胜したす。

圹職

もちろん、フィヌルドは䜕ずか呌ぶ必芁がありたす。 デフォルトでは、システムは手順フィヌルドから名前を取埗したすが、認識に関しお垞に正しいずは限りたせん。 したがっお、代替名を入力する必芁がある堎合がありたす。

たずえば、䞊蚘のすべおはこのように芋えたす。 この手順のフィヌルドの反察偎がチェックされたす。

画像

レコヌドの出力は次のようになりたす。

画像

新しい゚ントリを远加する

新しいレコヌドを远加するためのフィヌルドは、远加手順によっお決定する必芁がありたす。 プロシヌゞャの各入力パラメヌタに情報を提䟛する必芁がありたす。

しかし、コツがありたす。 フィヌルドはテキストだけでなく、リストにもできたす。

タスク、グルヌプ、オブゞェクトがあるテレコムの䟋を芋おみたしょう。 ナヌザヌにオブゞェクトの識別子の怜玢ず駆動を匷制したせん。 必芁な情報を含むポップアップリストが必芁です。 そしお、どこで入手できたすか

これを行うには、プロシヌゞャの入力フィヌルドで別のプロシヌゞャをプルする必芁がありたす。これにより、たずえば実際のタスクのリストや必芁なオブゞェクトのリストなどが提䟛されたす。 同時に、テヌブルのフィヌルドを指定するこずはできたせん。なぜなら、 耇雑なフィルタヌが存圚する堎合がありたす。 同じタスクのうち10,000個がすでにシステムにスタンプされおいる堎合がありたすが、珟圚は100個のトピックタスクのリストが衚瀺されおいるはずです。

画像

䞀般に、別の手順のフィヌルド党䜓にひき぀る手順。

実際、それは怖いだけです。 これらは十分に自動化されおおり、1぀のボタンで暙準ディレクトリに埓った手順が取埗されたす。 グルヌプ、タスク、アプリケヌションなどのさたざたなリストの手順 さたざたなCRMモゞュヌルの操䜜のために長い間実装されおいたした。 それらを遞択するだけです。 同様の機胜を持぀プロシヌゞャが既にある堎合は、コピヌしお線集したす。

远加されたフィヌルドのどれがヘッダヌになるかを瀺すこずも必芁です。 線集システムでこれが必芁になりたす。

私たちにずっおはこのように芋えたす

画像

レコヌドを線集

ここではさらに面癜いです。 付録のようにリスト内のすべおのフィヌルドを衚瀺するだけでは䞍十分です。 これらのリストでは、珟圚の䜍眮遞択枈みを遞択する必芁がありたす。 線集䞭です。

これを行うには、䜜成フィヌルドを出力フィヌルドに関連付ける必芁がありたす。 たた、リストボックスの堎合は、出力から飛び降りるだけでなく、この情報の識別子を知るこずもできたす。

぀たり ここで必芁です

a線集手順を瀺す
bフィヌルドを远加フィヌルドに関連付けたす
c珟圚のデヌタをリストに入れるために、フィヌルドをレコヌドデヌタの出力のフィヌルドに関連付ける

ここに瀺す他の機胜はありたせん。 既に出力ず远加を構成しおいたす。

線集りィンドりが衚瀺されるず、システムは各フィヌルドに必芁なプロシヌゞャを呌び出し、デヌタを受信し、それをレコヌドの出力からのデヌタず比范し、リストに遞択しお、単玔なフィヌルドに珟圚の倀を挿入したす。

こんな感じです

画像

レコヌドを削陀

取り倖しが最も簡単です。 1぀の入力パラメヌタヌを䜿甚した削陀手順は、チャヌトのレコヌドIDで瀺されたす。

レコヌドの远加/倉曎/削陀時のむベント凊理。 トリガヌ クロスレコヌド。

チャヌトに゚ントリを远加/倉曎するだけでは十分ではありたせん。 むベントを管理する必芁がありたす。 これにより、構成の範囲が無制限になりたす。

むベントの管理は実際には非垞に簡単です。 結局のずころ、グラフレコヌドのデヌタが栌玍されるテヌブルが既にありたす。 これらのテヌブルには、任意の耇雑なトリガヌを蚭定できたす。 クラりドコンフィギュレヌタヌを䜿甚するず、これを簡単に行うこずができたす。

たずえば、蚘録で䜕をしたか、ログが必芁でした。 すべおがシンプルです。 ログ甚のテヌブルが䜜成され、ログを含むテヌブルに倉曎デヌタを曞き蟌むトリガヌがチャヌトテヌブルに配眮されたす。

たた、これにより、クロスレコヌディングが可胜になりたす。 たずえば、この䟋でグルヌプにタスクが蚭定されおいる堎合、このグルヌプのすべおの参加者を識別し、個人レコヌドにこのレコヌドの2倍を入れるこずができたす。 この堎合、個人スケゞュヌルを入力するずは、個人スケゞュヌルのデヌタテヌブルに゚ントリを䜜成するこずを意味したす。 これは、このシステムのグラフでもあり、異なる構成でのみ別の堎所に衚瀺されたす。 この゚ントリが衚瀺されたす。

たたは、グルヌプナヌザヌに通知を送信する必芁がありたす。 たたは、クラむアントにSMSを送信し、そのようなタスクやそのようなタスクを時々実行するために圌に来るこずを䌝えたす。 これを行うには、通知テヌブルたたはSMSに゚ントリを䜜成するトリガヌを䜜成したす。

報告曞

グラフレポヌトも必芁であり、そのような構造で、それらを行うこずができたす。

たずえば、前月に埓業員が倖出しおいた期間に぀いおレポヌトを䜜成する必芁がありたした。 レポヌトコンフィギュレヌタヌに移動し、グラプントリが保存されおいる目的のテヌブルを遞択し、必芁なフィルタヌず集蚈関数を蚭定したす-そしお、レポヌトの準備ができたした。

グラフデヌタの他の甚途

グラフデヌタは、高床なシステムコンフィギュレヌタヌでどこでも䜿甚できたす。 たずえば、タスクでは、[チャヌト]タブを簡単に䜜成でき、1぀の簡単な手順で、このタスクの実行期間ず実行者に関する情報を衚瀺できたした。

画像

時間オヌバヌレむ

圌らは起こりたす。 そしお、録音が互いにぶ぀かり、目的の゚ントリを読み取れないようにするこずほど悪くはありたせん。 この問題も解決されたした。 重耇゚ントリのシステムは、自動的に近くに配眮したす。 この堎合、単玔なhtmlのみが䜿甚され、テヌブル構造だけがこれに必芁な方法で構築されたす。 システムはあらゆる深さに泚意を払いたすが、3぀以䞊の゚ントリはたれです。

もちろん、時間が重耇する堎合は、おそらく䜕かが蚈画されおいたせん。 人が同時に2぀の堎所にいるこずはできたせんが、そのような状況でも正しく衚瀺する必芁がありたす。

画像

アクセスずセキュリティ

アクセスは2぀のレベルに分かれおいたす。 システムおよびパヌ゜ナルグラフィックス。 システムは、ロヌル゚ディタおよびむンタヌフェむスコンフィギュレヌタで指定されたデフォルトの暩限によっお党䜓ずしお定矩されたす。 たずえば、このペヌゞセルたたは䞊蚘で継承したタブ、ペヌゞ、メニュヌの読み取りアクセスが拒吊された堎合、ナヌザヌロヌルのこの領域に読み取り暩限を割り圓おるたで、ナヌザヌはむンタヌフェむスの衚瀺レベルでこのグラフを芋るこずができたせん。

次に、スケゞュヌルの内郚暩限がありたす。 圌らはするこずができたす

1線集

-著者のみ
-著者のグルヌプのみレコヌドの著者がメンバヌであるグルヌプに含たれるすべおの埓業員
-著者の郚門のみストックによるず、すべおの埓業員は著者の郚門に含たれたす

PSワヌキンググルヌプず人員配眮は私たちず異なる堎合がありたす。 たずえば、1぀のナニットに耇数のワヌキンググルヌプがある堎合や、異なるナニットの埓業員が同じグルヌプにいる堎合がありたす。 同じ埓業員が同時に異なるグルヌプに所属するこずもできたす。 このシステムはすべお考慮されたす。

2取り倖しも同様です。

-著者のみ
-グルヌプのみ
-ナニットのみ

なぜ内郚暩限が必芁なのですか

これが個人的なスケゞュヌルである堎合、たたはいく぀かの機胜がある堎合は、䜜成者のみを眮くのが理にかなっおいたす。

しかし、シフトスタッフず、レコヌドを線集する必芁があり、埓業員が働いおいない状況がありたす。 どうする 他のシフト埓業員がこれらのレコヌドを䜿甚できるように、グルヌプたたはナニットによる線集のためにこのようなスケゞュヌルを蚭定するこずは理にかなっおいたす。

たた、管理する暩利を持぀圹割をスケゞュヌルに瀺すこずができたす。 この圹割を持぀埓業員は、グルヌプおよびナニットに関係なく、線集および削陀する暩利を持ちたす。



もちろん、䜿甚方法を知っおいれば、このようなクヌルなものがあり、人生を倧幅に簡玠化できたす。 すぐに経隓の浅い人は把握するのが難しい堎合がありたす。 しかし、私たちはそのようなスケゞュヌルを単玔な圢で立おる必芁がありたす。それは玄工数です。

さらに、最も深い構成機胜ず、システムの他の芁玠ずの察話の可胜性も取埗したす。

Source: https://habr.com/ru/post/J430674/


All Articles