Hej,
mam taki problem. Używam pewnego protokołu do komunikacji z bankami, i chcę zrobić przelew. Problem w tym, że w jednym cyklu protokołu muszę zrobić 3 cykle aplikacji. Protokół wymaga implementacji klasy z metodą callback, która to metoda jest wywoływana kilka razy, i za każdym razem oczekuje innej reakcji użytkownika. Wygląda to mniej więcej tak:
[code]
nr |Rails | callback
1 |start połączenia | wybierz metodę autentykacji
2 |wyświetl metody autentykacji i | przyjmij wybraną metodę informacji / wyślij informacje na temat wybranej metody autentykacji (np 3,5,7 cyfra z smsa)
|wyślij wybraną |
3 |wyświetl informację i wyślij | przyjmij kod bezpieczeństwa / wyświetl rezultat
|kod autentykacyjny |[/code]
Tutaj mały pseudokod obrazujący pracę protokołu:
[code=ruby]# to implementuje ja, potrzebuję tu jakoś łączyć się z railsami
class MyCallback < BaseCallback
def callback(reason, message)
case reason
when :choose_auth_method
# tu powiemy railsom o możliwych metodach autentykacji i będziemy czekac na to co użytkownik odpowie,
# potem wyślemy railsom informacje który kod trzeba podać ( Rails nr 1 i 2)
process_auth_method_choosing(message)
when :get_auth_method_security_code
# tu przyjmiemy kod wysłany przez railsy (Rails nr 3)
end
end
conn = BankConnection.new(auth_params, BaseCallback)
#wykonujemy transfer, teraz nam się wywoła callback z argumentami reason i message w zależności od progressu połączenia
conn.preform_transfer(transfer_data)
a to też musimy wysłać railsom
conn.result.get_message
ufff![/code]
Jako że railsy wymagają kilka cykli, to połączenie muszę odpalić w osobnym procesie (ewentualnie wątku kontenera, bo applikacja jest na jruby, ale chyba mniej kłopotów stworzyć process). I teraz pytanie do Was, jak to wszystko ogarnąć? Na czym odpalić prodes do tworzenia transferów, jak się komunikować? Co jest obecnie w najlepsze do rozwiązania tego typu problemu?
PS. Nie jest to pewnie precyzyjnie napisane, ale pytajcie jak coś jest nie jasne. Za trochę to znów przeczytam i doprecyzuję.