isis-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Dan Haywood <...@haywood-associates.co.uk>
Subject Re: Menu getAll action returns table with many sql queries for each entry
Date Tue, 21 Nov 2017 17:08:56 GMT
Yes, there's a ticket [1].

With respect to a query returning a million times etc., I take the view
that this would be a modelling error... No user wants to browse over so
many rows. I think the framework should, therefore, automatically limit the
number of rows, eg to 1000 (configurable).

I'll look to do that in the same ticket.

Thx,
Dan.



[1] https://issues.apache.org/jira/browse/ISIS-1774


On Fri, 17 Nov 2017 at 10:46 Serdar Hamzaogullari <hasan.serdar@foreks.com>
wrote:

> Hi Dan,
>
> Let me remind you that also: at the first table render still we have a
> Select all sql query right ? Think we have one million record on table.
> Select all and buffer these objects at memory can cause an out of memory.
> At the first table render before pagination you can apply the pagination
> first page operation so that we never have a select all query.
>
> Did you create a ticket for this pagination issue ? How can I follow ? Can
> I contribute ? I did not go inside the isis codes before. Maybe you can
> point me to the related codes.
>
> On Fri, Nov 17, 2017 at 1:03 PM, Dan Haywood <dan@haywood-associates.co.uk
> >
> wrote:
>
> > Hi Serdar,
> > Yeah, saw your email, been mulling on the best solution for this.
> >
> > The issue is that behind the scenes Isis creates a serializable (wicket)
> > model which is the identity (oid) of each object to be rendered.  When
> the
> > user navigates to the second page, we just render the next set of objects
> > from this list, rehyrdating each from the serialized oid one by one.
> >
> > I can think of two possible improvements.
> >
> > The first, probably easier, would be to keep the same general
> architecture,
> > but to optimize things so that the framework does a single bulk request
> of
> > all object to be rendered.  I would imagine that would result in a single
> > SELECT FROM WHERE id in (x, y, z, a, b, ...) .  That's fine for a
> small-ish
> > number of objects (for example, SQL Server and Sybase have an upper limit
> > of ~1000 before they table scan).
> >
> > The second idea I have would be to change the architecture such that on
> > pagination we resubmit the original query, but then keep track of where
> > we're up to, eg instances 16~30 or 31~45 etc.  I think that would be more
> > work because the table being rendered would need to keep a memento of
> that
> > query, as well as which page we're on.
> >
> > I'll have a go at implementing the first idea as a first pass; hopefully
> > will be quite easy.
> >
> > Thx
> > Dan
> >
> > On Fri, 17 Nov 2017 at 09:15 Serdar Hamzaogullari <
> hasan.serdar@foreks.com
> > >
> > wrote:
> >
> > > Hello Dan,
> > >
> > > Maybe you missed my email. Did you investigate the pagination
> performance
> > > problem that I indicated in my previous email ?
> > >
> > > On Mon, Nov 13, 2017 at 11:50 AM, Serdar Hamzaogullari <
> > > hasan.serdar@foreks.com> wrote:
> > >
> > > > Hi Dan,
> > > >
> > > > Thanks for the solution. I tried it and it works fine for get all
> menu
> > > > action however if I click to any page in the pagination list I see
> the
> > > sql
> > > > queries for all entries again.
> > > >
> > > > I think we need to solve the pagination performance problem.
> > > >
> > > > On Sun, Nov 12, 2017 at 7:57 PM, Dan Haywood <
> > > dan@haywood-associates.co.uk
> > > > > wrote:
> > > >
> > > >> Hi Serdar,
> > > >>
> > > >> I did.  And here's the thing ... the framework has always done this
> > (at
> > > >> least since 1.8.0, which was the first version I tested).  So, my
> > > >> apologies
> > > >> for indicating otherwise.
> > > >>
> > > >> Clearly we ought to do better here, and I do have a workaround which
> > you
> > > >> could try out.  In your application's DomainApplication (subclass of
> > > >> IsisWicketApplication), add the following to the end of the init()
> > > method:
> > > >>
> > > >>
> > > >> getRequestCycleSettings().setRenderStrategy(RequestCycleSett
> > > >> ings.RenderStrategy.REDIRECT_TO_BUFFER);
> > > >>
> > > >> By default we use the REDIRECT_TO_RENDER strategy ... I dimly recall
> > my
> > > >> rationale as being that it's "safer"; this Wicket wiki page [1]
> > explains
> > > >> the difference.  However, this is what causes the 1+N loading that
> we
> > > see.
> > > >> A first Isis/DN session is used to select the objects, and mementos
> > for
> > > >> all
> > > >> retrieved objects are captured.  This first session is then closed.
> > On
> > > >> render, we then open a new Isis/DN session and use those mementos to
> > > >> retrieve all objects one by one.
> > > >>
> > > >> Using REDIRECT_TO_BUFFER means that all the work is done in a single
> > > >> session, avoiding the issue.
> > > >>
> > > >> My limited testing didn't throw up any adverse effects to switching
> to
> > > >> REDIRECT_TO_BUFFER, and I've raised a ticket [2] to explore changing
> > > this
> > > >> behaviour.
> > > >>
> > > >> Thanks for raising this, let me know how you get on.
> > > >>
> > > >> Cheers
> > > >> Dan
> > > >>
> > > >> [1]
> > > https://cwiki.apache.org/confluence/display/WICKET/Render+strategies
> > > >> [2] https://issues.apache.org/jira/browse/ISIS-1774
> > > >>
> > > >>
> > > >> On Sat, 11 Nov 2017 at 20:30 Serdar Hamzaogullari <
> > > >> hasan.serdar@foreks.com>
> > > >> wrote:
> > > >>
> > > >> > Hello Dan,
> > > >> >
> > > >> > Did you have a chance to take look at my github example app
> > > >> >
> > > >> > 9 Kas 2017 Per, saat 16:22 tarihinde Serdar Hamzaogullari <
> > > >> > hasan.serdar@foreks.com> şunu yazdı:
> > > >> >
> > > >> > > Hi Dan,
> > > >> > >
> > > >> > > Here is a complete example of the problem
> > > >> > >
> > > >> > > https://github.com/radresian/apache-isis-sample
> > > >> > >
> > > >> > > After running the application Click the ProfilePreferences Menu
> ->
> > > >> List
> > > >> > > All, then you will see the SQL queries for each entry at the
> > console
> > > >> > logs...
> > > >> > >
> > > >> > > On Thu, Nov 9, 2017 at 2:17 AM, Dan Haywood <
> > > >> > dan@haywood-associates.co.uk>
> > > >> > > wrote:
> > > >> > >
> > > >> > >> Hmm, looks ok.
> > > >> > >>
> > > >> > >> Can you upload an example app to github so I can pull it down
> and
> > > >> take a
> > > >> > >> closer look?
> > > >> > >>
> > > >> > >> Thx
> > > >> > >> Dan
> > > >> > >>
> > > >> > >> On Wed, 8 Nov 2017 at 23:12 Serdar Hamzaogullari <
> > > >> > hasan.serdar@foreks.com
> > > >> > >> >
> > > >> > >> wrote:
> > > >> > >>
> > > >> > >> > Hi Jörg,
> > > >> > >> >
> > > >> > >> > IdGeneratorStrategy.IDENTITY did not help. Same result.
> > > >> > >> >
> > > >> > >> > Hi Dan,
> > > >> > >> >
> > > >> > >> > Here is my repository:
> > > >> > >> >
> > > >> > >> >
> > > >> > >> > @DomainService(
> > > >> > >> >         nature = NatureOfService.DOMAIN,
> > > >> > >> >         repositoryFor = ProfilePreferences.class
> > > >> > >> > )
> > > >> > >> > public class ProfilePreferencesRepository {
> > > >> > >> >
> > > >> > >> >     public List<ProfilePreferences> listAll() {
> > > >> > >> >         return
> > > >> > repositoryService.allInstances(ProfilePreferences.class);
> > > >> > >> >     }
> > > >> > >> >
> > > >> > >> >     public ProfilePreferences get(final String name) {
> > > >> > >> >         return repositoryService.uniqueMatch(
> > > >> > >> >                 new QueryDefault<>(
> > > >> > >> >                         ProfilePreferences.class,
> > > >> > >> >                         "get",
> > > >> > >> >                         "name", name));
> > > >> > >> >     }
> > > >> > >> >
> > > >> > >> >     public ProfilePreferences create(final String name) {
> > > >> > >> >         final ProfilePreferences object = new
> > > >> > ProfilePreferences(name);
> > > >> > >> >         serviceRegistry.injectServicesInto(object);
> > > >> > >> >         repositoryService.persist(object);
> > > >> > >> >         return object;
> > > >> > >> >     }
> > > >> > >> >
> > > >> > >> >     @javax.inject.Inject
> > > >> > >> >     RepositoryService repositoryService;
> > > >> > >> >     @javax.inject.Inject
> > > >> > >> >     ServiceRegistry2 serviceRegistry;
> > > >> > >> > }
> > > >> > >> >
> > > >> > >> >
> > > >> > >> >
> > > >> > >> > On Wed, Nov 8, 2017 at 8:16 PM, Dan Haywood <
> > > >> > >> dan@haywood-associates.co.uk>
> > > >> > >> > wrote:
> > > >> > >> >
> > > >> > >> > > Hi Serdar,
> > > >> > >> > >
> > > >> > >> > > can you show us your repository implementation?
> > > >> > >> > >
> > > >> > >> > > I'm wondering why you have defined a query called "Get", I
> > > >> wonder if
> > > >> > >> it's
> > > >> > >> > > being used in that repo (I don't think it should be, if so)
> > > >> > >> > >
> > > >> > >> > > Ta
> > > >> > >> > > Dan
> > > >> > >> > >
> > > >> > >> > >
> > > >> > >> > > On Wed, 8 Nov 2017 at 17:09 Rade, Joerg / Kuehne + Nagel /
> > Ham
> > > >> > GI-DP <
> > > >> > >> > > Joerg.Rade@kuehne-nagel.com> wrote:
> > > >> > >> > >
> > > >> > >> > > > Hi Serdar,
> > > >> > >> > > >
> > > >> > >> > > > did you consider:
> > > >> > >> > > >
> > > >> > >> > > > @javax.jdo.annotations.DatastoreIdentity(
> > > >> > >> > > >         strategy =
> > > >> > >> javax.jdo.annotations.IdGeneratorStrategy.IDENTITY,
> > > >> > >> > > >         column = "id")
> > > >> > >> > > >
> > > >> > >> > > > instead of:
> > > >> > >> > > >
> > > >> > >> > > > @PrimaryKey?
> > > >> > >> > > >
> > > >> > >> > > > Best regards
> > > >> > >> > > > Jörg
> > > >> > >> > > >
> > > >> > >> > > > -----Ursprüngliche Nachricht-----
> > > >> > >> > > > Von: Serdar Hamzaogullari [mailto:
> hasan.serdar@foreks.com]
> > > >> > >> > > > Gesendet: Mittwoch, 8. November 2017 17:07
> > > >> > >> > > > An: users@isis.apache.org
> > > >> > >> > > > Betreff: Menu getAll action returns table with many sql
> > > queries
> > > >> > for
> > > >> > >> > each
> > > >> > >> > > > entry
> > > >> > >> > > >
> > > >> > >> > > > Hi,
> > > >> > >> > > >
> > > >> > >> > > > I have a menu action like this, listAll action:
> > > >> > >> > > >
> > > >> > >> > > >
> > > >> > >> > > > @DomainService(
> > > >> > >> > > >         nature = NatureOfService.VIEW_MENU_ONLY,
> > > >> > >> > > >         objectType = "profile-preferences-services",
> > > >> > >> > > >         repositoryFor = ProfilePreferences.class
> > > >> > >> > > > )
> > > >> > >> > > > @DomainServiceLayout(
> > > >> > >> > > >         named = "Profile Preferences",
> > > >> > >> > > >         menuOrder = "3"
> > > >> > >> > > > )
> > > >> > >> > > > public class ProfilePreferencesMenu {
> > > >> > >> > > >
> > > >> > >> > > >     @Action(semantics = SemanticsOf.SAFE)
> > > >> > >> > > >     @ActionLayout(bookmarking = BookmarkPolicy.AS_ROOT)
> > > >> > >> > > >     @MemberOrder(sequence = "1")
> > > >> > >> > > >     public List<ProfilePreferences> listAll() {
> > > >> > >> > > >         return profilePreferencesRepository.listAll();
> > > >> > >> > > >     }
> > > >> > >> > > > .
> > > >> > >> > > > .
> > > >> > >> > > > .
> > > >> > >> > > >
> > > >> > >> > > > My Entity is that:
> > > >> > >> > > >
> > > >> > >> > > >
> > > >> > >> > > > @javax.jdo.annotations.PersistenceCapable(
> > > >> > >> > > >         identityType=IdentityType.APPLICATION,
> > > >> > >> > > >         table="profile_preferences",
> > > >> > >> > > >         schema = "dbo"
> > > >> > >> > > > )
> > > >> > >> > > > @javax.jdo.annotations.Version(
> > > >> > >> > > >         strategy= VersionStrategy.VERSION_NUMBER,
> > > >> > >> > > >         column="version")
> > > >> > >> > > > @javax.jdo.annotations.Queries({
> > > >> > >> > > >         @javax.jdo.annotations.Query(
> > > >> > >> > > >                 name = "get",
> > > >> > >> > > >                 value = "SELECT "
> > > >> > >> > > >                         + "FROM
> > > >> > >> > > >
> > > com.foreks.user.settings.domain.preferences.ProfilePreferences
> > > >> "
> > > >> > >> > > >                         + "WHERE
> > profileName.equals(:name)")
> > > >> > >> > > > })
> > > >> > >> > > > @DomainObject(
> > > >> > >> > > >         objectType = "profile-preferences"
> > > >> > >> > > > )
> > > >> > >> > > > public class ProfilePreferences implements
> > > >> > >> > > Comparable<ProfilePreferences> {
> > > >> > >> > > >
> > > >> > >> > > >     public ProfilePreferences(final String profileName) {
> > > >> > >> > > >         setProfileName(profileName);
> > > >> > >> > > >     }
> > > >> > >> > > >
> > > >> > >> > > >     @javax.jdo.annotations.Column(allowsNull = "false",
> > > >> length=
> > > >> > 150)
> > > >> > >> > > >     @PrimaryKey
> > > >> > >> > > >     @Getter @Setter
> > > >> > >> > > >     @Title(prepend = "Profile Preferences: ")
> > > >> > >> > > >     private String profileName;
> > > >> > >> > > >
> > > >> > >> > > >     @javax.jdo.annotations.Column(allowsNull = "true",
> > length
> > > >> =
> > > >> > >> 4000)
> > > >> > >> > > >     @Property(editing = Editing.ENABLED,hidden =
> > > >> Where.ALL_TABLES)
> > > >> > >> > > >     @Getter @Setter
> > > >> > >> > > >     private String preferences;
> > > >> > >> > > >
> > > >> > >> > > >     //region > delete (action)
> > > >> > >> > > >     @Action(semantics = SemanticsOf.NON_IDEMPOTENT_ARE
> > > >> _YOU_SURE)
> > > >> > >> > > >     public void delete() {
> > > >> > >> > > >         final String title = titleService.titleOf(this);
> > > >> > >> > > >         messageService.informUser(String.format("'%s'
> > > >> deleted",
> > > >> > >> > title));
> > > >> > >> > > >         repositoryService.remove(this);
> > > >> > >> > > >     }
> > > >> > >> > > >     //endregion
> > > >> > >> > > >
> > > >> > >> > > >     //region > delete (action)
> > > >> > >> > > >     @Action(semantics = SemanticsOf.NON_IDEMPOTENT)
> > > >> > >> > > >     public ProfilePreferences
> > copy(@ParameterLayout(named="P
> > > >> rofile
> > > >> > >> > > Name")
> > > >> > >> > > > String name) {
> > > >> > >> > > >         final ProfilePreferences object = new
> > > >> > >> ProfilePreferences(name);
> > > >> > >> > > >         object.setPreferences(preferences);
> > > >> > >> > > >         repositoryService.persist(object);
> > > >> > >> > > >         return object;
> > > >> > >> > > >     }
> > > >> > >> > > >     //endregion
> > > >> > >> > > >
> > > >> > >> > > >     //region > toString, compareTo
> > > >> > >> > > >     @Override
> > > >> > >> > > >     public String toString() {
> > > >> > >> > > >         return ObjectContracts.toString(this,
> > "profileName");
> > > >> > >> > > >     }
> > > >> > >> > > >
> > > >> > >> > > >     @Override
> > > >> > >> > > >     public int compareTo(final ProfilePreferences other)
> {
> > > >> > >> > > >         return ObjectContracts.compare(this, other,
> > > >> > "profileName");
> > > >> > >> > > >     }
> > > >> > >> > > >     //endregion
> > > >> > >> > > >
> > > >> > >> > > >     //region > injected services
> > > >> > >> > > >     @javax.inject.Inject
> > > >> > >> > > >     RepositoryService repositoryService;
> > > >> > >> > > >
> > > >> > >> > > >     @javax.inject.Inject
> > > >> > >> > > >     TitleService titleService;
> > > >> > >> > > >
> > > >> > >> > > >     @javax.inject.Inject
> > > >> > >> > > >     MessageService messageService;
> > > >> > >> > > >     //endregion
> > > >> > >> > > >
> > > >> > >> > > > }
> > > >> > >> > > >
> > > >> > >> > > >
> > > >> > >> > > > When I click the List All action from the wicket viewer
> > menu,
> > > >> > server
> > > >> > >> > logs
> > > >> > >> > > > this SQL queries:
> > > >> > >> > > >
> > > >> > >> > > > 19:03:07,334  [Native               http-nio-8080-exec-4
> > > DEBUG]
> > > >> > >> SELECT
> > > >> > >> > > > 'com.foreks.user.settings.domain.preferences.
> > ProfilePreferen
> > > >> ces'
> > > >> > AS
> > > >> > >> > > > NUCLEUS_TYPE,A0.preferences,A0.profileName,A0.version
> FROM
> > > >> > >> > > > dbo.profile_preferences A0
> > > >> > >> > > > 19:03:07,436  [Native               http-nio-8080-exec-5
> > > DEBUG]
> > > >> > >> SELECT
> > > >> > >> > > > A0.preferences,A0.version FROM dbo.profile_preferences A0
> > > WHERE
> > > >> > >> > > > A0.profileName = <'ahl'>
> > > >> > >> > > > 19:03:07,442  [Native               http-nio-8080-exec-5
> > > DEBUG]
> > > >> > >> SELECT
> > > >> > >> > > > A0.preferences,A0.version FROM dbo.profile_preferences A0
> > > WHERE
> > > >> > >> > > > A0.profileName = <'akbank'>
> > > >> > >> > > > 19:03:07,448  [Native               http-nio-8080-exec-5
> > > DEBUG]
> > > >> > >> SELECT
> > > >> > >> > > > A0.preferences,A0.version FROM dbo.profile_preferences A0
> > > WHERE
> > > >> > >> > > > A0.profileName = <'bmd'>
> > > >> > >> > > > 19:03:07,454  [Native               http-nio-8080-exec-5
> > > DEBUG]
> > > >> > >> SELECT
> > > >> > >> > > > A0.preferences,A0.version FROM dbo.profile_preferences A0
> > > WHERE
> > > >> > >> > > > A0.profileName = <'DELTA'>
> > > >> > >> > > > 19:03:07,460  [Native               http-nio-8080-exec-5
> > > DEBUG]
> > > >> > >> SELECT
> > > >> > >> > > > A0.preferences,A0.version FROM dbo.profile_preferences A0
> > > WHERE
> > > >> > >> > > > A0.profileName = <'foreks'>
> > > >> > >> > > > 19:03:07,466  [Native               http-nio-8080-exec-5
> > > DEBUG]
> > > >> > >> SELECT
> > > >> > >> > > > A0.preferences,A0.version FROM dbo.profile_preferences A0
> > > WHERE
> > > >> > >> > > > A0.profileName = <'halky'>
> > > >> > >> > > > 19:03:07,472  [Native               http-nio-8080-exec-5
> > > DEBUG]
> > > >> > >> SELECT
> > > >> > >> > > > A0.preferences,A0.version FROM dbo.profile_preferences A0
> > > WHERE
> > > >> > >> > > > A0.profileName = <'hcbs'>
> > > >> > >> > > > 19:03:07,477  [Native               http-nio-8080-exec-5
> > > DEBUG]
> > > >> > >> SELECT
> > > >> > >> > > > A0.preferences,A0.version FROM dbo.profile_preferences A0
> > > WHERE
> > > >> > >> > > > A0.profileName = <'issanal'>
> > > >> > >> > > > 19:03:07,483  [Native               http-nio-8080-exec-5
> > > DEBUG]
> > > >> > >> SELECT
> > > >> > >> > > > A0.preferences,A0.version FROM dbo.profile_preferences A0
> > > WHERE
> > > >> > >> > > > A0.profileName = <'marbas'>
> > > >> > >> > > > 19:03:07,489  [Native               http-nio-8080-exec-5
> > > DEBUG]
> > > >> > >> SELECT
> > > >> > >> > > > A0.preferences,A0.version FROM dbo.profile_preferences A0
> > > WHERE
> > > >> > >> > > > A0.profileName = <'odeabank'>
> > > >> > >> > > > 19:03:07,495  [Native               http-nio-8080-exec-5
> > > DEBUG]
> > > >> > >> SELECT
> > > >> > >> > > > A0.preferences,A0.version FROM dbo.profile_preferences A0
> > > WHERE
> > > >> > >> > > > A0.profileName = <'odtu'>
> > > >> > >> > > > 19:03:07,500  [Native               http-nio-8080-exec-5
> > > DEBUG]
> > > >> > >> SELECT
> > > >> > >> > > > A0.preferences,A0.version FROM dbo.profile_preferences A0
> > > WHERE
> > > >> > >> > > > A0.profileName = <'osmanli'>
> > > >> > >> > > > 19:03:07,506  [Native               http-nio-8080-exec-5
> > > DEBUG]
> > > >> > >> SELECT
> > > >> > >> > > > A0.preferences,A0.version FROM dbo.profile_preferences A0
> > > WHERE
> > > >> > >> > > > A0.profileName = <'piramit'>
> > > >> > >> > > > 19:03:07,512  [Native               http-nio-8080-exec-5
> > > DEBUG]
> > > >> > >> SELECT
> > > >> > >> > > > A0.preferences,A0.version FROM dbo.profile_preferences A0
> > > WHERE
> > > >> > >> > > > A0.profileName = <'tebsanal'>
> > > >> > >> > > > 19:03:07,517  [Native               http-nio-8080-exec-5
> > > DEBUG]
> > > >> > >> SELECT
> > > >> > >> > > > A0.preferences,A0.version FROM dbo.profile_preferences A0
> > > WHERE
> > > >> > >> > > > A0.profileName = <'ZIRAAT'>
> > > >> > >> > > >
> > > >> > >> > > >
> > > >> > >> > > > There is a query for each entity.  The firs query
> > > >> > >> > > >
> > > >> > >> > > >  SELECT
> > > >> > >> > 'com.foreks.user.settings.domain.preferences.
> > ProfilePreferences'
> > > >> > >> > > > AS NUCLEUS_TYPE,A0.preferences,A0.profileName,A0.version
> > FROM
> > > >> > >> > > > dbo.profile_preferences A0
> > > >> > >> > > >
> > > >> > >> > > > should be enough. Query for every entity becomes a
> > > performance
> > > >> > >> problem.
> > > >> > >> > > > How can I prevent this behavior ? Is there some thing
> wrong
> > > or
> > > >> > >> missing
> > > >> > >> > in
> > > >> > >> > > > my Entity Class or Menu Action Class ?
> > > >> > >> > > >
> > > >> > >> > > > Help please :)
> > > >> > >> > > >
> > > >> > >> > > > --
> > > >> > >> > > >  <http://www.foreksmobile.com/redirect.html>
> > > >> > >> > > >
> > > >> > >> > > > P
> > > >> > >> > > >
> > > >> > >> > > > Bu mesaji yazdirmadan önce çevreye olan sorumlulugumuzu
> bir
> > > kez
> > > >> > daha
> > > >> > >> > > > düsünelim.
> > > >> > >> > > > Please consider the environment before printing this
> > e-mail.
> > > >> > >> > > >
> > > >> > >> > > > Bu elektronik posta ve onunla iletilen bütün dosyalar
> > sadece
> > > >> > >> > göndericisi
> > > >> > >> > > > tarafından alması amaçlanan yetkili gerçek ya da tüzel
> > > kişinin
> > > >> > >> > kullanımı
> > > >> > >> > > > içindir. Eğer söz konusu yetkili alıcı değilseniz bu
> > > elektronik
> > > >> > >> > postanın
> > > >> > >> > > > içeriğini açıklamanız, kopyalamanız, yönlendirmeniz ve
> > > >> kullanmanız
> > > >> > >> > > > kesinlikle yasaktır ve bu elektronik postayı derhal
> > silmeniz
> > > >> > >> > > gerekmektedir.
> > > >> > >> > > > FOREKS bu mesajın içerdiği bilgilerin doğruluğu veya
> > eksiksiz
> > > >> > olduğu
> > > >> > >> > > > konusunda herhangi bir garanti vermemektedir. Bu nedenle
> bu
> > > >> > >> bilgilerin
> > > >> > >> > ne
> > > >> > >> > > > şekilde olursa olsun içeriğinden, iletilmesinden,
> > > alınmasından
> > > >> ve
> > > >> > >> > > > saklanmasından sorumlu değildir. Bu mesajdaki görüşler
> > > yalnızca
> > > >> > >> > gönderen
> > > >> > >> > > > kişiye aittir ve FOREKS'in görüşlerini yansıtmayabilir.
> > > >> > >> > > > Bu e-posta bilinen bütün bilgisayar virüslerine karşı
> > > >> taranmıştır.
> > > >> > >> > > > *
> > > >> > >> > > > This e-mail and any files transmitted with it are
> > > confidential
> > > >> and
> > > >> > >> > > > intended solely for the use of the individual or entity
> to
> > > whom
> > > >> > they
> > > >> > >> > are
> > > >> > >> > > > addressed.
> > > >> > >> > > > If you are not the intended recipient you are hereby
> > notified
> > > >> that
> > > >> > >> any
> > > >> > >> > > > dissemination, forwarding, copying or use of any of the
> > > >> > information
> > > >> > >> is
> > > >> > >> > > > strictly prohibited, and the e-mail should immediately be
> > > >> deleted.
> > > >> > >> > FOREKS
> > > >> > >> > > > makes no warranty as to the accuracy or completeness of
> any
> > > >> > >> information
> > > >> > >> > > > contained in this message and hereby excludes any
> liability
> > > of
> > > >> any
> > > >> > >> kind
> > > >> > >> > > for
> > > >> > >> > > > the information contained therein or for the information
> > > >> > >> transmission,
> > > >> > >> > > > reception, storage or use of such in any way whatsoever.
> > The
> > > >> > >> opinions
> > > >> > >> > > > expressed in this message belong to sender alone and may
> > not
> > > >> > >> > necessarily
> > > >> > >> > > > reflect the opinions of FOREKS.
> > > >> > >> > > > This e-mail has been scanned for all known computer
> > viruses.
> > > >> > >> > > >
> > > >> > >> > > > Kühne + Nagel (AG & Co.) KG
> > > >> > >> > > > Rechtsform: Kommanditgesellschaft, Bremen HRA 21928,
> > > >> USt-IdNr.: DE
> > > >> > >> > > > 812773878.
> > > >> > >> > > > Geschäftsleitung Kühne + Nagel (AG & Co.) KG: Dr.
> Hansjörg
> > > Rodi
> > > >> > >> (Vors.
> > > >> > >> > ),
> > > >> > >> > > > Martin Brinkmann, Holger Ketz, Jan-Hendrik Köstergarten,
> > > >> Nicholas
> > > >> > >> > Minde,
> > > >> > >> > > > Michael Nebel, Lars Wedel, Matthias Weiner.
> > > >> > >> > > > Persönlich haftende Gesellschafterin: Kühne & Nagel A.G.,
> > > >> > >> Rechtsform:
> > > >> > >> > > > Aktiengesellschaft nach luxemburgischem Recht, HR-Nr.: B
> > > 18745,
> > > >> > >> > > > Geschäftsführendes Verwaltungsratsmitglied: Karl
> Gernandt.
> > > >> > >> > > > Geschäftsleitung Region Zentral- und Osteuropa: Dr.
> > Hansjörg
> > > >> Rodi
> > > >> > >> > > (Vors.),
> > > >> > >> > > > Thierry Held, Uwe Hött, Richard Huhn, Holger Ketz,
> > > Jan-Hendrik
> > > >> > >> > > > Köstergarten, Jan Kunze, Michael Nebel, Guillaume
> Sauzedde,
> > > >> > Mustafa
> > > >> > >> > > Sener.
> > > >> > >> > > >
> > > >> > >> > > > Wir arbeiten ausschließlich auf Grundlage der Allgemeinen
> > > >> > Deutschen
> > > >> > >> > > > Spediteurbedingungen 2017 (ADSp 2017). Hinweis: Die ADSp
> > 2017
> > > >> > >> weichen
> > > >> > >> > in
> > > >> > >> > > > Ziffer 23 hinsichtlich des Haftungshöchstbetrages für
> > > >> Güterschäden
> > > >> > >> (§
> > > >> > >> > 431
> > > >> > >> > > > HGB) vom Gesetz ab, indem sie die Haftung bei
> multimodalen
> > > >> > >> Transporten
> > > >> > >> > > > unter Einschluss einer Seebeförderung und bei unbekanntem
> > > >> > Schadenort
> > > >> > >> > auf
> > > >> > >> > > 2
> > > >> > >> > > > SZR/kg und im Übrigen die Regelhaftung von 8,33 SZR/kg
> > > >> zusätzlich
> > > >> > >> auf
> > > >> > >> > > 1,25
> > > >> > >> > > > Millionen Euro je Schadenfall sowie 2,5 Millionen Euro je
> > > >> > >> > > Schadenereignis,
> > > >> > >> > > > mindestens aber 2 SZR/kg, beschränken. Die ADSp sind auf
> > > >> unserer
> > > >> > >> > Webseite
> > > >> > >> > > > als Download erhältlich. Auf Anfrage senden wir Ihnen
> diese
> > > >> auch
> > > >> > >> gerne
> > > >> > >> > > zu.
> > > >> > >> > > >
> > > >> > >> > >
> > > >> > >> >
> > > >> > >> > --
> > > >> > >> >  <http://www.foreksmobile.com/redirect.html>
> > > >> > >> >
> > > >> > >> > P
> > > >> > >> >
> > > >> > >> > Bu mesaji yazdirmadan önce çevreye olan sorumlulugumuzu bir
> kez
> > > >> daha
> > > >> > >> > düsünelim.
> > > >> > >> > Please consider the environment before printing this e-mail.
> > > >> > >> >
> > > >> > >> > Bu elektronik posta ve onunla iletilen bütün dosyalar sadece
> > > >> > göndericisi
> > > >> > >> > tarafından alması amaçlanan yetkili gerçek ya da tüzel
> kişinin
> > > >> > kullanımı
> > > >> > >> > içindir. Eğer söz konusu yetkili alıcı değilseniz bu
> elektronik
> > > >> > postanın
> > > >> > >> > içeriğini açıklamanız, kopyalamanız, yönlendirmeniz ve
> > > kullanmanız
> > > >> > >> > kesinlikle yasaktır ve bu elektronik postayı derhal silmeniz
> > > >> > >> gerekmektedir.
> > > >> > >> > FOREKS bu mesajın içerdiği bilgilerin doğruluğu veya eksiksiz
> > > >> olduğu
> > > >> > >> > konusunda herhangi bir garanti vermemektedir. Bu nedenle bu
> > > >> bilgilerin
> > > >> > >> ne
> > > >> > >> > şekilde olursa olsun içeriğinden, iletilmesinden,
> alınmasından
> > ve
> > > >> > >> > saklanmasından sorumlu değildir. Bu mesajdaki görüşler
> yalnızca
> > > >> > gönderen
> > > >> > >> > kişiye aittir ve FOREKS'in görüşlerini yansıtmayabilir.
> > > >> > >> > Bu e-posta bilinen bütün bilgisayar virüslerine karşı
> > > taranmıştır.
> > > >> > >> > *
> > > >> > >> > This e-mail and any files transmitted with it are
> confidential
> > > and
> > > >> > >> intended
> > > >> > >> > solely for the use of the individual or entity to whom they
> are
> > > >> > >> addressed.
> > > >> > >> > If you are not the intended recipient you are hereby notified
> > > that
> > > >> any
> > > >> > >> > dissemination, forwarding, copying or use of any of the
> > > >> information is
> > > >> > >> > strictly prohibited, and the e-mail should immediately be
> > > deleted.
> > > >> > >> FOREKS
> > > >> > >> > makes
> > > >> > >> > no warranty as to the accuracy or completeness of any
> > information
> > > >> > >> contained
> > > >> > >> > in this message and hereby excludes any liability of any kind
> > for
> > > >> the
> > > >> > >> > information contained therein or for the information
> > > transmission,
> > > >> > >> > reception, storage or use of such in any way whatsoever. The
> > > >> opinions
> > > >> > >> > expressed in this message belong to sender alone and may not
> > > >> > necessarily
> > > >> > >> > reflect the opinions of FOREKS.
> > > >> > >> > This e-mail has been scanned for all known computer viruses.
> > > >> > >> >
> > > >> > >>
> > > >> > >
> > > >> > >
> > > >> >
> > > >> > --
> > > >> >  <http://www.foreksmobile.com/redirect.html>
> > > >> >
> > > >> > P
> > > >> >
> > > >> > Bu mesaji yazdirmadan önce çevreye olan sorumlulugumuzu bir kez
> daha
> > > >> > düsünelim.
> > > >> > Please consider the environment before printing this e-mail.
> > > >> >
> > > >> > Bu elektronik posta ve onunla iletilen bütün dosyalar sadece
> > > göndericisi
> > > >> > tarafından alması amaçlanan yetkili gerçek ya da tüzel kişinin
> > > kullanımı
> > > >> > içindir. Eğer söz konusu yetkili alıcı değilseniz bu elektronik
> > > postanın
> > > >> > içeriğini açıklamanız, kopyalamanız, yönlendirmeniz ve kullanmanız
> > > >> > kesinlikle yasaktır ve bu elektronik postayı derhal silmeniz
> > > >> gerekmektedir.
> > > >> > FOREKS bu mesajın içerdiği bilgilerin doğruluğu veya eksiksiz
> olduğu
> > > >> > konusunda herhangi bir garanti vermemektedir. Bu nedenle bu
> > bilgilerin
> > > >> ne
> > > >> > şekilde olursa olsun içeriğinden, iletilmesinden, alınmasından ve
> > > >> > saklanmasından sorumlu değildir. Bu mesajdaki görüşler yalnızca
> > > gönderen
> > > >> > kişiye aittir ve FOREKS'in görüşlerini yansıtmayabilir.
> > > >> > Bu e-posta bilinen bütün bilgisayar virüslerine karşı taranmıştır.
> > > >> > *
> > > >> > This e-mail and any files transmitted with it are confidential and
> > > >> intended
> > > >> > solely for the use of the individual or entity to whom they are
> > > >> addressed.
> > > >> > If you are not the intended recipient you are hereby notified that
> > any
> > > >> > dissemination, forwarding, copying or use of any of the
> information
> > is
> > > >> > strictly prohibited, and the e-mail should immediately be deleted.
> > > >> FOREKS
> > > >> > makes
> > > >> > no warranty as to the accuracy or completeness of any information
> > > >> contained
> > > >> > in this message and hereby excludes any liability of any kind for
> > the
> > > >> > information contained therein or for the information transmission,
> > > >> > reception, storage or use of such in any way whatsoever. The
> > opinions
> > > >> > expressed in this message belong to sender alone and may not
> > > necessarily
> > > >> > reflect the opinions of FOREKS.
> > > >> > This e-mail has been scanned for all known computer viruses.
> > > >> >
> > > >>
> > > >
> > > >
> > >
> > > --
> > >  <http://www.foreksmobile.com/redirect.html>
> > >
> > > P
> > >
> > > Bu mesaji yazdirmadan önce çevreye olan sorumlulugumuzu bir kez daha
> > > düsünelim.
> > > Please consider the environment before printing this e-mail.
> > >
> > > Bu elektronik posta ve onunla iletilen bütün dosyalar sadece
> göndericisi
> > > tarafından alması amaçlanan yetkili gerçek ya da tüzel kişinin
> kullanımı
> > > içindir. Eğer söz konusu yetkili alıcı değilseniz bu elektronik
> postanın
> > > içeriğini açıklamanız, kopyalamanız, yönlendirmeniz ve kullanmanız
> > > kesinlikle yasaktır ve bu elektronik postayı derhal silmeniz
> > gerekmektedir.
> > > FOREKS bu mesajın içerdiği bilgilerin doğruluğu veya eksiksiz olduğu
> > > konusunda herhangi bir garanti vermemektedir. Bu nedenle bu bilgilerin
> ne
> > > şekilde olursa olsun içeriğinden, iletilmesinden, alınmasından ve
> > > saklanmasından sorumlu değildir. Bu mesajdaki görüşler yalnızca
> gönderen
> > > kişiye aittir ve FOREKS'in görüşlerini yansıtmayabilir.
> > > Bu e-posta bilinen bütün bilgisayar virüslerine karşı taranmıştır.
> > > *
> > > This e-mail and any files transmitted with it are confidential and
> > intended
> > > solely for the use of the individual or entity to whom they are
> > addressed.
> > > If you are not the intended recipient you are hereby notified that any
> > > dissemination, forwarding, copying or use of any of the information is
> > > strictly prohibited, and the e-mail should immediately be deleted.
> FOREKS
> > > makes
> > > no warranty as to the accuracy or completeness of any information
> > contained
> > > in this message and hereby excludes any liability of any kind for the
> > > information contained therein or for the information transmission,
> > > reception, storage or use of such in any way whatsoever. The opinions
> > > expressed in this message belong to sender alone and may not
> necessarily
> > > reflect the opinions of FOREKS.
> > > This e-mail has been scanned for all known computer viruses.
> > >
> >
>
> --
>  <http://www.foreksmobile.com/redirect.html>
>
> P
>
> Bu mesaji yazdirmadan önce çevreye olan sorumlulugumuzu bir kez daha
> düsünelim.
> Please consider the environment before printing this e-mail.
>
> Bu elektronik posta ve onunla iletilen bütün dosyalar sadece göndericisi
> tarafından alması amaçlanan yetkili gerçek ya da tüzel kişinin kullanımı
> içindir. Eğer söz konusu yetkili alıcı değilseniz bu elektronik postanın
> içeriğini açıklamanız, kopyalamanız, yönlendirmeniz ve kullanmanız
> kesinlikle yasaktır ve bu elektronik postayı derhal silmeniz gerekmektedir.
> FOREKS bu mesajın içerdiği bilgilerin doğruluğu veya eksiksiz olduğu
> konusunda herhangi bir garanti vermemektedir. Bu nedenle bu bilgilerin ne
> şekilde olursa olsun içeriğinden, iletilmesinden, alınmasından ve
> saklanmasından sorumlu değildir. Bu mesajdaki görüşler yalnızca gönderen
> kişiye aittir ve FOREKS'in görüşlerini yansıtmayabilir.
> Bu e-posta bilinen bütün bilgisayar virüslerine karşı taranmıştır.
> *
> This e-mail and any files transmitted with it are confidential and intended
> solely for the use of the individual or entity to whom they are addressed.
> If you are not the intended recipient you are hereby notified that any
> dissemination, forwarding, copying or use of any of the information is
> strictly prohibited, and the e-mail should immediately be deleted. FOREKS
> makes
> no warranty as to the accuracy or completeness of any information contained
> in this message and hereby excludes any liability of any kind for the
> information contained therein or for the information transmission,
> reception, storage or use of such in any way whatsoever. The opinions
> expressed in this message belong to sender alone and may not necessarily
> reflect the opinions of FOREKS.
> This e-mail has been scanned for all known computer viruses.
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message