Wie implementiere ich eine mehrstufige Genehmigung mit Webformularen / Entitätsformularen basierend auf Formularkomponenten?


7

Ist es möglich, einen mehrstufigen Übermittlungsworkflow mit Webform oder Entityform aufzurufen ? Hier ist das Szenario von Workflows:

  • Ein Mitarbeiter sendet das Formular
    • Der Supervisor erhält eine Benachrichtigung, nachdem er das Formular überprüft hat, genehmigt er es entweder oder lehnt die Anfrage bei derselben Einreichung ab.
    • Wenn dies genehmigt wird, wird eine E-Mail-Benachrichtigung an Director gesendet, der seinerseits dieselbe Übermittlung genehmigt oder ablehnt.
  • Wenn dies vom Vorgesetzten abgelehnt wird, wird eine E-Mail an einen Mitarbeiter gesendet.

In diesem Szenario werden mehrere Rollen an dieselbe Anforderung gesendet. Ich könnte Genehmigungsfelder für die Mitarbeiterrolle ausblenden, aber wie würde man über Benachrichtigungszwecke über Regeln auf die Webformular-Genehmigungsfeldkomponente zugreifen? Wie würde ich den Formularstatus einfrieren?

Sollte ich lieber Entityforms verwenden, da jede Formularkomponente verfügbar ist? Als letzten Ausweg könnte ich meine eigene Lösung mit forms_api implementieren. Aber ich möchte zuerst wissen, ob es möglich ist, Webform oder Entityforms zu verwenden.


Ich stelle mir vor, dass EntityForms nur ein grundlegender Drupal-Inhaltstyp ist, den das Workbench-Modul für Sie erledigen kann.
Tenken

Antworten:


9

Die Implementierung dieses Workflows ist durch die Verwendung einer Kombination dieser Module möglich (und regulärer Inhaltstypen, für die keine "Webformulare" erforderlich sind):

In meiner Antwort in der Frage " Wie kann ich anonymen Besuchern erlauben, Inhalte einzureichen? " Finden Sie Beispiele (und weitere Details) zur Verwendung dieser 4 Module zusammen (diese Frage hier scheint eine Variation dieser Frage zu sein).

Im Folgenden finden Sie einige Details, um Ihren Workflow mit einem ähnlichen Ansatz zu implementieren:

Ein Mitarbeiter sendet das Formular

Mitarbeiter erstellen einen Knoten von Inhaltstyp (sagen wir) „Request“ (Use Content Access alle Arten von Berechtigungen über „finetune welche Rolle erlaubt ist , solche Typen zu erstellen, wenn Sie mehrere Arten von Anfragen müssen Sie nur multipple Inhaltstypen erweitern).

Der Supervisor erhält eine Benachrichtigung, nachdem er das Formular überprüft hat, genehmigt er es entweder oder lehnt die Anfrage bei derselben Einreichung ab.

  • Verwenden Sie Regeln, um "eine E-Mail zu senden" (= Aktion) an Supervisor "Nachdem der Inhalt vom Typ" Anfrage "gespeichert wurde" (= Ereignis). Geben Sie in der (benutzerdefinierten) E-Mail für den Supervisor alle relevanten Details zur Anforderung an (abhängig von den verschiedenen Daten, die Regeln zur Verfügung stehen). Zum Beispiel eine URL des zu überprüfenden Knotens.

  • Um sicherzustellen, dass der Anforderer die Anforderungsdaten nicht ändern kann (während der Überprüfungsprozess noch aussteht), fügen Sie derselben (vorherigen) Regel eine zusätzliche Aktion hinzu, die den Zugriff auf die Anforderung aktualisiert (damit sie nur für den Anforderer schreibgeschützt ist).

  • Verwenden Sie das Flag- Modul, damit der Supervisor den übermittelten Knoten mit Flags wie "Genehmigt (vom Supervisor)" oder "Verweigert (vom Supervisor)" (Abgelehnt?) Markieren kann. Die Berechtigung zum Setzen dieser Flags ist auf den / die Supervisor (s) beschränkt.

Wenn dies genehmigt wird, wird eine E-Mail-Benachrichtigung an Director gesendet, der seinerseits dieselbe Übermittlung genehmigt oder ablehnt.

  • Verwenden Sie Regeln (erneut), damit "Nachdem ein Knoten mit" Genehmigt (vom Supervisor) "gekennzeichnet wurde (= Ereignis), ein ähnliches" Senden einer E-Mail "(= Aktion) an Director erfolgt. Geben Sie in der (benutzerdefinierten) E-Mail für den Director alle relevanten Details zur Anforderung an (abhängig von den verschiedenen Daten, die den Regeln zur Verfügung stehen). Zum Beispiel eine URL des zu überprüfenden Knotens.

  • Verwenden Sie das Flag- Modul (erneut), damit der Director den übermittelten Knoten mit Flags wie "Genehmigt (vom Director)" oder "Verweigert (vom Director)" markieren kann. Die Berechtigung zum Setzen dieser Flags ist auf den Director beschränkt.

  • Verwenden Sie Regeln, um "eine E-Mail zu senden" (= Aktion) an den Anforderer "Nachdem der Inhalt vom Typ" Anforderung "als abgelehnt (vom Director) gekennzeichnet wurde" (= Ereignis).

Wenn dies vom Vorgesetzten abgelehnt wird, wird eine E-Mail an einen Mitarbeiter gesendet.

  • Verwenden Sie Regeln, um "eine E-Mail zu senden" (= Aktion) an den Anforderer "Nachdem der Inhalt vom Typ" Anforderung "als abgelehnt (vom Supervisor) gekennzeichnet wurde" (= Ereignis).

Also nur ein paar grundlegende Regeln / Flaggen ...

Es enthält (noch) nichts im Zusammenhang mit Node Convert . Dieses Modul muss nur zu dieser Mischung hinzugefügt werden, wenn Sie das Obige mit bestimmten "Feldern" weiter verfeinern möchten, die einige der Workflow-Teilnehmer überhaupt nicht "sehen" sollten (um zu vermeiden, dass Sie "Feldberechtigungen" verwenden müssen). das könnte eine Alternative dazu sein.

Mögliche Verbesserungen

Formularblock

Ich habe keine Erfahrung mit dem Formularblock- Modul. Auf der Projektseite heißt es: " Ermöglicht die Darstellung von Benutzerregistrierungs-, standortweiten Kontakt- oder Knotenerstellungsformularen in Blöcken. Dies ist besonders nützlich, um Formulare in Bedienfeldern einzuschließen. "

Es scheint mir, dass wenn Sie Panels verwenden, es möglicherweise einen Mehrwert gibt, wenn Sie dieses Modul verwenden. Ich bin jedoch (noch) nicht von dem tatsächlichen Mehrwert dieses Moduls überzeugt.

Es gibt jedoch einige Dinge, die mir wie rote Fahnen erscheinen (= Ich würde zweimal überlegen, bevor ich dieses Modul verwende):

  • Wo ist die Dokumentation?

    Abgesehen von dem, was auf der Projektseite steht, gibt es (a) keine Community-Dokumentation (zumindest nicht verlinkt von der Projektseite) und (b) eine readme.txt, die mit dem Modul geliefert wird, aber keinen "echten" Inhalt .

  • Wo ist die D7-Version?

    Für D6 ist eine offizielle Version verfügbar. Eine D7-Version gibt es jedoch nur als alfa 1, die über ein Jahr alt ist. Und dann gibt es bereits eine D8-Version im Beta-Status. Ich bin mir nicht sicher, was in D8 auf mich zukommt, aber für D7 scheint etwas nicht zu stimmen. Wird es jemals eine offizielle D7-Version geben? In der Nutzungsstatistik gibt es jedoch viele D7-Sites. Nahezu 10 KB gemeldete Installationen für diese D7-alfa-Version. 10K-Sites, die die Module verwenden, können nicht falsch sein, daher muss es so etwas wie "Diese alfa1-Version ist praktisch eine offizielle Version, die so gekennzeichnet werden sollte" sein.

Die obigen Aufzählungszeichen sind nur einige der Kriterien, anhand derer ich mich häufig für beigesteuerte Module entscheide. Weitere Informationen finden Sie in der Community-Dokumentation zu Maintenance Scorecards . Hier ist das Intro dazu (von dieser Seite):

... enthält eine Liste von 23 Kriterien (= 28-5), anhand derer die Wartung und der Support der bereitgestellten Module bewertet werden können. Im Folgenden wird versucht, diese Kriterien auf jedes der nativen Diagrammmodule anzuwenden ...

Offensichtlich beziehen sich diese Scorecards auf "Diagrammmodule", aber IMHO gelten dieselben Kriterien, IMHO, auch wenn Sie sich zwischen mehreren Modulen entscheiden müssen.

Bohne

Vielleicht sollten Sie ein weiteres Modul im Bereich Blöcke hinzufügen, indem Sie sich das Bean- Modul ansehen. Hier ist ein Zitat über seine Projektseite:

Stellen Sie sich eine Bean als Methode zum Bereitstellen neuer Typen vor (im Vergleich zum Knoten wäre dies ein Inhaltstyp), die dann eine Schnittstelle zum Hinzufügen von Inhalten bietet, um so viele Blöcke zu erstellen, wie Sie benötigen (siehe Abbildung unten). Der Bean-Inhalt kann dann wie jeder andere Block auf der Site platziert werden.

In Kombination mit den verfügbaren Optionen zum Erteilen der entsprechenden Bean-Berechtigungen sollte dies Ihnen viel Flexibilität geben, wie genau Sie dieses (großartige) Modul in Ihrem speziellen Fall verwenden möchten. Als Bonus funktioniert das Bean-Modul auch hervorragend in Kombination mit den Modulen UUID und UUID Features Integration . Nachdem Sie sich mit dem Bean-Modul vertraut gemacht haben, finden Sie möglicherweise andere Fälle auf Ihrer Site, in denen Sie auch das Bean-Modul verwenden möchten (was die Tatsache kompensiert, dass Sie ein weiteres Modul hinzufügen müssen).

Videoanleitungen

Wenn Sie mit Regeln nicht vertraut sind , lesen Sie die Video-Tutorials. Lernen Sie das Regelwerk kennen . Und / oder ähnliche 8 Video-Tutorials zum Flag- Modul.

Das Video-Tutorial Drupal Bean-Modul-Tutorial - Verwenden der Bean Admin-Benutzeroberfläche bietet eine großartige Einführung, um die Leistungsfähigkeit des Bean- Moduls und die Art der Dinge, die Sie damit tun können , wirklich zu verstehen (indem Sie nur Techniken zum Erstellen von Websites verwenden, ohne dass eine benutzerdefinierte Codierung erforderlich ist). Es zeigt auch, wie das Bean-Modul Drupal-Blöcke in feldfähige Entitäten umwandelt.


1
Interessanter Ansatz aus eigenem Anbau!
Tenken

1
Das ist sehr einfach! Das einzige Problem, das ich mit diesem Ansatz habe, ist die Benutzererfahrung. Zumindest für Mitarbeiter wäre es eher ein Content / Add-Prozess als ein einfaches Formular (wie es in Webformularen der Fall gewesen wäre). Ich werde den vorgeschlagenen Ansatz ausprobieren und die Frage entsprechend markieren. Vielen Dank.
JT-Drupal

Danke für das Feedback. Ja, dies wäre ein Content / Add-Prozess, aber mit der Leistung, die "Rules" (und "Flag") hinzufügen, können Sie auch einige Dinge automatisieren (und durchsetzen!). Hängen Sie ein bisschen und ich werde meine Antwort AbitMORE darüber erweitern, was ich damit meine ...
Pierre.Vriens

1
Pierre, es hat definitiv funktioniert. Vielen Dank, dass Sie diese Idee vorgeschlagen haben. Ich verwende das Modul form_block, um die Benutzererfahrung zu verbessern und nur den Formularteil hinzuzufügen. Jetzt ist es wie ein Webformular, aber leistungsfähiger.
JT-Drupal

1
Können Sie bitte drupal.org/project/formblock in Ihre Antwort aufnehmen, damit es auch anderen Menschen hilft? :)
JT-Drupal
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.